Vous n'êtes pas identifié(e).
Bonjour,
Je migre un ancien serveur vers un nouveau, et il y a une DB 8.2 à transférer.
J'ai installé la version 9.6 sur le nouveau serveur.
J'utilise les dumps réalisés sur le serveur 8.2 par la commande :
pg_dump.exe -i -h localhost -p 5432 -U postgres -F c -b -v -f "C:\Server Files\Backup\postgresql\db_ptg.backup" "db_ptg"
J'ai donc un fichier db_ptg.backup à réinstaller dans la nouvelle DB 9.6 vide.
J'envoie la commande :
pg_restore.exe -U admin-user -d db_ptg -c -v -1 "D:\Test-PostGRE\postgresql\db_ptg.backup"
Et j'obtiens une erreur :
pg_restore: connexion à la base de données pour la restauration
Mot de passe : 'REM : j'ai introduit le bon mot de passe'
pg_restore: suppression de TRIGGER RI_ConstraintTrigger_26693
pg_restore: [programme d'archivage (db)] Erreur pendant le traitement de la TOC (« PROCESSING TOC ») :
pg_restore: [programme d'archivage (db)] Erreur à partir de l'entrée TOC 1860 ;
2620 26693 TRIGGER RI_ConstraintTrigger_26693 postgres
pg_restore: [programme d'archivage (db)] could not execute query: ERREUR: la relation « public.notes » n'existe pas
La commande était : DROP TRIGGER "RI_ConstraintTrigger_26693" ON public.note
s;
Que faire pour corriger le problème ?
Merci d'avance pour votre aide.
Hors ligne
Il a essayé de faire un drop trigger (vous avez passé l'option -c à pg_restore), qui a échoué. Couplé au "-1" (une seule transaction), la restauration s'est arrêtée là et est partie en rollback.
Essayez sans le -c ou sans le -1 (et avec une base vide). Ou sans aucun des deux, si votre base est vide.
Marc.
Hors ligne
Merci pour votre réponse.
Ca progresse, mais c'est encore loin d'être parfait.
Voici mon script actuel :
C:\Program Files\PostgreSQL\9.6\bin\pg_restore.exe" --host "localhost" --port "5432" --username "postgres" --password --role "postgres" --dbname "db_ptg" --verbose "C:/Program Files/PostgreSQL/9.6/Exports/db_ptg.backup"
Mais je reçois 2 types d'erreurs en rafale.
Erreur 1 :
pg_restore: création de FUNCTION « public.char(integer) »
pg_restore: [programme d'archivage (db)] Erreur à partir de l'entrée TOC 20 ; 1255 26356 FUNCTION char(integer) jf
pg_restore: [programme d'archivage (db)] could not execute query: ERREUR: le rôle « jf » n'existe pas
La commande était : ALTER FUNCTION public."char"(integer) OWNER TO jf;
Un rôle n'existe pas... Pourquoi ?
Erreur 2:
pg_restore: création de TRIGGER « public.RI_ConstraintTrigger_26658 »
pg_restore: [programme d'archivage (db)] Erreur à partir de l'entrée TOC 1904 ; 2620 26658 TRIGGER RI_ConstraintTrigger_26658 postgres
pg_restore: [programme d'archivage (db)] could not execute query: ERREUR: la contrainte « num_type_presta_pointages » de la relation « pointages » existe déjà
La commande était : CREATE CONSTRAINT TRIGGER num_type_presta_pointages
AFTER UPDATE ON type_presta
FROM pointages
NOT DEFERRABLE IN...
Merci d'avance pour votre aide.
Hors ligne
Erreur 1: ce que vous restaurez est un dump d'une base de données. Les utilisateurs sont des objets globaux à l'instance, ils ne seront donc pas dans le dump.
Donc soit vous créez le rôle jf à la main avant de commencer, soit vous pouvez générer un script contenant les objets globaux sur l'instance source: pg_dumpall -g (avec les options de connexion qui vont bien, coup de bol, c'est la même syntaxe que pour pg_dump/pg_restore )
Erreur 2: Vous essayez de restaurer une contrainte qui existe déjà… elle devait vraiment déjà exister (vous n'avez peut-être pas nettoyé la base de départ avant de restaurer? le plus simple c'est drop database suivi de create database)
Marc.
Hors ligne
Merci pour l'info.
Effectivement, en créant le rôle jf, tout se simplifie.
J'ai droppé la DB avant de l'importer.
Et j'ai toujours cette erreur de contrainte déjà existante...
Bizarre...
De plus, j'ai trouvé cette erreur-ci :
pg_restore: création de TRIGGER « public.RI_ConstraintTrigger_26650 »
pg_restore: [programme d'archivage (db)] Erreur pendant le traitement de la TOC (« PROCESSING TOC ») :
pg_restore: [programme d'archivage (db)] Erreur à partir de l'entrée TOC 1882 ; 2620 26650 TRIGGER RI_ConstraintTrigger_26650 postgres
pg_restore: [programme d'archivage (db)] could not execute query: ERREUR: il n'existe aucune contrainte unique correspondant aux clés données pour la
table « travailleurs » référencée
La commande était : CREATE CONSTRAINT TRIGGER init_horaires
AFTER UPDATE ON travailleurs
FROM horaires
NOT DEFERRABLE INITIALLY IMME...
Hors ligne
Très bizarre effectivement.
Ça pourrait être intéressant de lister le contenu de la TOC du fichier: c'est l'option -l de pg_restore.
Sinon, ce qui pourrait aussi valoir le coup, c'est de tenter le pg_dump avec le pg_dump de la 9.6 plutôt qu'avec le pg_dump de la 8.2 (je présume que c'est ce que vous avez fait).
Marc.
Hors ligne
Le pg_restore avec -l génère une belle liste, mais aucun message d'erreur dans le log...
Quant au pg_dump sur le serveur d'origine, j'ai laissé la version 8.2 Je n'ose pas installer la 9.6.
A vrais dire, je touche le moins possible au serveur, qui est agonisant.
Il est grand temps qu'il soit migré vers une machine récente, car le système disque de l'actuel donne des erreurs, le DNS ne fonctionne plus, des programmes refusent de démarrer...
Hors ligne