2017-09-28 67 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