数据库备份:指定使用哪个pg_dump

3

当调用

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

I get:

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

我正在使用非root安装的PostgreSQL(版本9.6.5)作为django应用程序的后端。(使用教程进行安装。)
机器上还安装了一个postgreSQL(版本8.4.20)。
在切换到非root安装之前,一切都运行得很顺利。 我猜测在dbbackup中调用的pg_dump仍然是来自root安装的那个。
如何指定要使用哪个pg_dump?
1个回答

1
如果您进行了非root安装postgreSQL,比如使用用户nonrootuser,那么您应该能够在/home/nonrootuser/postgres/bin/路径下找到此安装的psqlpg_dump。这就是您要使用的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

希望这有所帮助!


谢谢你的快速回答,我现在正在尝试它! - dendragon
2
它成功了!非常感谢!我在dbbackup的文档中总是找不到这个 :( - dendragon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接