2016-12-07 1 views
0

J'essaie de sauvegarder une base de données postgres entière et la restaurer correctement, mais je vois une liste d'erreurs lors de la tentative de restauration de la sauvegarde. J'utilise pg_dump pour créer un fichier sql de sauvegarde. (J'ai un fichier .pgpass pour le mot de passe)Quelles sont les causes d'erreurs lors de la restauration de la base de données postgres?

sudo -u postgres pg_dump -d db-w > backup.sql 

Lorsque je tente de restaurer la base de données avec:

sudo -u postgres psql db < backup.sql 

Je reçois une liste des erreurs comme:

ERROR: duplicate key value violates unique constraint 
ERROR: multiple primary keys for table 
ERROR: relation <relation> already exists 
ERROR: trigger <trigger> for relation <relation> already exist 

havre de paix I 't fait aucun changement à la base de données. J'ai simplement effectué une sauvegarde et restaurer la sauvegarde juste après.

Qu'est-ce que je fais mal?

+2

Vous restaurez votre sauvegarde dans une base de données non vide. – wildplasser

Répondre

0

votre restauration sur une base de données existante, si vous voulez et vous de remplacer la base de données avec la sauvegarde que vous pouvez utiliser l'option --clean et --create

-c, --clean Clean (baisse) objets de base de données avant de les recréer. (Cela pourrait générer des messages d'erreur sans conséquence, si aucun objet ne sont pas présents dans la base de données de destination.)

C, --create Créer la base de données avant de la restaurer. Si --clean est également spécifié, supprimez et recréez la base de données cible avant de vous connecter à .

+0

Puis-je utiliser ces indicateurs avec la commande psql? Je reçois une erreur d'option non valide – ScrawnySquirrel

+0

@ScrawnySquirrel Vous devez utiliser pg_restore pour utiliser les commutateurs, etc. Vous devez également vous assurer que votre sauvegarde est du bon format pour pg_restore. Voir la documentation ici. https://www.postgresql.org/docs – Mokadillion