2017-09-28 42 views
1

当调用DBBACKUP指定pg_dump在使用

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

还有一个PostgreSQL安装在机器(版本8.4.20)。

在我切换到非root用户安装之前,所有工作都完美无瑕。 我的猜测是,在dbbackup中调用的pg_dump仍然是根安装中的一个。

如何指定要使用哪个pg_dump?

回答

1

如果你做了的PostgreSQL非root用户安装,说与用户nonrootuser,那么你应该找psql以及pg_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使用特定的值。

希望有帮助!

+0

感谢您的快速回答,我正在尝试它! – dendragon

+1

它的工作原理!非常感谢!我不知何故无法在dbbackup的文档中找到这个:( – dendragon