我无法备份odoo 12数据库,我使用Postgres 10和docker container.error:
Database backup error: Postgres subprocess ('/usr/bin/pg_dump', '--no-owner', '--file=/tmp/tmpgoyjsd3i/dump.sql', 'odoo') error 1
答案 0 :(得分:1)
如果您使用不同版本的Postgresql客户端(Odoo服务器上的版本)和服务器(数据库服务器上的版本),则会发生此错误。如果您使用的是Odoo“官方” Docker映像或基于该映像的映像,例如veivaa / odoo映像,它基于debian:stretch版本,并且具有Postgresql版本9.6作为默认客户端。使用此设置,您将不匹配:客户端v9.6连接到服务器v10。它将导致您得到错误。
要解决此问题,您必须在客户端和服务器上安装相同版本。您可以将Postgres服务器降级到9.6,或者将Odoo Docker容器中的Postgres客户端升级到10。您可以通过手动升级客户端来测试。 docker exec -ti -u 0 yourodoocontainername bash
到Odoo容器并在Odoo容器内执行以下命令:
apt-get update
echo 'deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main' > /etc/apt/sources.list.d/pgdg.list
yes Y | apt-get install wget
yes Y | apt-get install gnupg
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
apt-get update
yes Y | apt-get install postgresql-client-10
您需要在容器中具有root权限才能运行这些权限。安装完成后,您可以退出exec并使用docker restart yourodoocontainername
重新启动容器。确保您具有用于Odoo数据的永久存储,以免丢失文件存储。完成这些步骤后,您便可以使用Odoo Web界面进行备份和还原。
您可以使用psql --version
命令检查您的Postgresql客户端版本。版本9.6的预期结果是psql (PostgreSQL) 9.6.10
,版本10的预期结果是psql (PostgreSQL) 10.6 (Debian 10.6-1.pgdg90+1)
。
exec方法适用于测试,但不适用于永久使用,因为它涉及手动步骤。您应该通过修改Dockerfile来使用正确的版本构建Docker映像。