Vous n'êtes pas identifié(e).
Pages : 1
c'est ce que j'essaie de faire justement dans le même transaction, je fais les set constraints puis j'essaie de deleter ma table avec drop table mais la commande ne passe pas ou bien vider son contenu avec truncate table (error:cannot truncate a table referenced in a foreign key constraint) ;
après mon begin, j'ai même essayé un ALTER TABLE ma_table_à_restaurer DISABLE TRIGGER ALL;
et là mon \i ma_table_à_restaurer me répond "ERROR: duplicate key value violates unique constraint ...."
j'ai l'impression de tourner en rond ...
en fait je viens de refaire un test où j'ai çà :
BEGIN;
ALTER TABLE nom_table1 ALTER CONSTRAINT nom_contrainte1 DEFERRABLE;
SET CONSTRAINTS nom_contrainte1 DEFERRED;
ALTER TABLE nom_table2 ALTER CONSTRAINT nom_contrainte2 DEFERRABLE;
SET CONSTRAINTS nom_contrainte2 DEFERRED;
DROP ma_table_à_restaurer ;
et là erreur "ERROR: cannot drop table ma_table_à_restaurer because other objects depend on it" et me suggère de faire un DROP CASCADE ....ce qui ne m'arrange pas du tout
Ici l'idée était de faire un drop de ma table avant de lancer une restauration dans la transaction en cours en faisant \i ma_table_à_restaurer.sql (que j'ai extrait de mon dump)
car si je lance la restauration sans dropper j'ai ce message d"erreur ERROR: relation "ma_table_à_restaurer" already exists ....
Bonjour,
Qu'entendez-vous par version personnalisés de pg_restore ?
Salut et merci pour la réponse.
c'est que j'ai fait mais les contraintes ne passent pas en "deferred".
Bonjour,
Je souhaite restaurer des tables spécifiques sans toucher aux autres tables et ne pas faire une restauration complète.
Or, sur ces tables, il y a des contraintes externes (clés étrangères).
J'essaie de procéder ainsi :
BEGIN;
ALTER TABLE nom_table1 ALTER CONSTRAINT nom_contrainte1 DEFERRABLE;
SET CONSTRAINTS nom_contrainte1 DEFERRED;
ALTER TABLE nom_table2 ALTER CONSTRAINT nom_contrainte2 DEFERRABLE;
SET CONSTRAINTS nom_contrainte2 DEFERRED;
COMMIT;
puis j'efface le contenu de ma table à restaurer :
DELETE FROM ma_table_à_restaurer;
puis j'essaie de faire en user postgres : pg_restore -v -p 5440 -d ma_base -t ma_table_à_restaurer --data-only mondump.dump
mais j'ai toujours des erreurs de ce type ERROR: duplicate key value violates unique constraint "pk_nom_contrainte"
Mais ce ne doit pas être la bonne façon de procéder ....je tourne en boucle sur le sujet.
Quelq'un aurait-il une méthode qui fonctionne ?
Merci pour votre aide,
Pages : 1