2017-09-28 30 views
1

Lorsque vous appelezdbbackup spécifier qui pg_dump à utiliser

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

Je reçois:

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 

J'utilise une installation non racine de PostgreSQL (version 9.6.5) comme back-end pour une application django. (Didacticiel this utilisé pour l'installation.)

Il existe également une installation postgreSQL dans la machine (version 8.4.20). Avant de passer à l'installation non-root, tout fonctionnait parfaitement. Ma conjecture est que le pg_dump appelé dbbackup est toujours celui de l'installation de la racine.

Comment spécifier quel pg_dump utiliser?

Répondre

1

Si vous avez une installation non racine de postgreSQL, dire avec l'utilisateur nonrootuser, alors vous devriez trouver psql ainsi que pg_dump pour cette installation sous /home/nonrootuser/postgres/bin/. C'est leque vous voulez utiliser. Dbbackup vous permet de spécifier le connecteur utilisé pour créer la sauvegarde. En particulier, il vous permet de spécifier la commande de vidage (DUMP_CMD). Pour spécifier le connecteur, ajoutez le bloc suivant à votre 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' 
      ) 
     } 
    } 

Remplacez le xxx avec vos valeurs spécifiques.

Espérons que ça aide!

+0

Merci pour cette réponse rapide, je l'essaie maintenant! – dendragon

+1

Ça marche! Merci beaucoup! Je ne pouvais pas trouver cela dans les docs de dbbackup :( – dendragon