3

打电话时

from django.core.management import call_command
call_command('dbbackup', compress=True, interactive=False)

我得到:

CommandConnectorError: Error running:  pg_dump xxx --host=localhost --port=xxx --username=xxx --no-password --clean 
pg_dump: server version: 9.6.5; pg_dump version: 8.4.20
pg_dump: aborting because of server version mismatch

我正在使用 PostgreSQL(版本)的非 root 安装9.6.5作为 django 应用程序的后端。(使用教程进行安装。)

机器中还有一个 postgreSQL 安装(版本8.4.20)。

在我切换到非 root 安装之前,一切都完美无缺。我的猜测是被pg_dump调用的dbbackup仍然是根安装中的调用。

如何指定使用哪个 pg_dump?

4

1 回答 1

1

如果您已经进行了 postgreSQL 的非 root 安装,比如说使用用户,nonrootuser那么您应该在. 这是您要使用的。psqlpg_dump/home/nonrootuser/postgres/bin/pg_dump

Dbbackup 允许您指定它用来创建备份的连接器。特别是它允许您指定转储命令 ( DUMP_CMD)。要指定连接器,请将以下块添加到您的 settings.py:

import os  # if not yet imported
DBBACKUP_CONNECTORS = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'xxx',
        'USER': 'xxx',
        'PASSWORD': 'xxx',
        'HOST': 'xxx',
        'PORT': 'xxx',
        'DUMP_CMD': os.path.join(
            os.environ["HOME"],
            'nonrootuser',
            'bin',
            'pg_dump'
            )
        }
    }

将 替换为xxx您的特定值。

希望有帮助!

于 2017-09-28T13:05:04.627 回答