python - dbbackup 指定使用哪个 pg_dump

标签 python postgresql centos pg-dump django-1.11

调用时

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(版本 9.6.5)作为 django 应用程序的后端。 (使用 this 安装教程。)

机器中还安装了 postgreSQL(版本 8.4.20)。

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

如何指定使用哪个 pg_dump?

最佳答案

如果你使用非根用户安装了 postgreSQL,比如使用 nonrootuser,那么你应该找到 psql 以及 pg_dump/home/nonrootuser/postgres/bin/ 下安装。这是您要使用的 pg_dump

Dbbackup 允许您指定它用于创建备份的连接器。 特别是它允许您指定转储命令 ( DUMP_CMD )。 要指定连接器,请将以下 block 添加到您的 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 替换为您的特定值。

希望对您有所帮助!

关于python - dbbackup 指定使用哪个 pg_dump,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46469887/

相关文章:

python - 不知道如何卸载不需要的 Spacy 安装、模型

python递归函数调用

python - 使用带有 try-except block 的 python "with"语句

postgresql - 如何解决 PostgreSQL pgAdmin error "Server instrumentation not installed"for adminpack?

python - 分词器改变词汇条目

database - 使用存储过程模拟 postgresql

sql - postgresql:插入…(选择*…,"fixed value")

linux - ESXi 5.1 虚拟机不再能够从其他虚拟机挂载 NFS 共享

centos - 将 KVM 虚拟机导出到 HyperV

postgresql - Postgres COPY TO 不适用于预期的目标目录