【问题标题】:dbbackup specify which pg_dump to usedbbackup 指定使用哪个 pg_dump
【发布时间】:2017-09-28 21:12:20
【问题描述】:

调用时

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 应用程序的后端。 (安装时使用this教程。)

本机也有安装postgreSQL(版本8.4.20)。

在我切换到非 root 安装之前,一切正常。 我的猜测是在dbbackup 中调用的pg_dump 仍然是根安装中的那个。

如何指定使用哪个 pg_dump?

【问题讨论】:

    标签: python postgresql centos pg-dump django-1.11


    【解决方案1】:

    如果您已经进行了 postgreSQL 的非 root 安装,例如用户 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 替换为您的具体值。

    希望有帮助!

    【讨论】:

    • 感谢您的快速回答,我正在尝试!
    • 有效!非常感谢!我不知何故在 dbbackup 的文档中找不到这个:(
    猜你喜欢
    • 2014-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2016-05-10
    • 1970-01-01
    相关资源
    最近更新 更多