postgres - pg_dump et pg_restore sans rôles


11

J'essaie de restaurer un vidage sans avoir les rôles appropriés sur la base de données réceptrice.

Comme mentionné ici , mais aussi ici , vous devez avoir l' --no-owneren option, que ce soit dans pg_dumpou pg_restoreou les deux

J'ai utilisé la ligne de commande suivante pour créer mon vidage

"C:\Program Files\PostgreSQL\9.3\bin\pg_dump.exe" --no-owner -Ft --dbname=postgresql://avo******:AV0******?@127.0.0.1:5432/BI_DB > K:\BI\backup\sort\bck_%timestamp%.tar

La ligne de restauration est comme suit

"C:\Program Files\PostgreSQL\9.3\bin\pg_restore.exe" --host localhost --port 5432 --username "postgres" --dbname "BI_TEST2" --no-password  --no-owner --role=postgres --exit-on-error --verbose "D:\D\avo\backup\bck_04042017_1410.tar"

Comme vous pouvez le voir, les deux ont l' --no-owneroption mais finalement, j'ai l'erreur ci-dessous

entrez la description de l'image ici

Ce qui me dérange le plus est le journal ci-dessous

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 2633 ; 0 0 ACL adm avo******
pg_restore: [programme d'archivage (db)] could not execute query: ERREUR:  role « avo****** » does not exist

Pourquoi dit-il qu'il a besoin d'un rôle même si cela a --no-ownerété spécifié?

Ai-je oublié quelque chose?

Addendum: je cours sur Postgres 9.3

À votre santé

Réponses:


13

L'erreur se produit lors de la pg_restoredéfinition des ACL: vous pouvez utiliser --no-aclpour empêcher les GRANTcommandes.

Avec l' -Ftoption in pg_dump, vous pouvez ignorer les rôles et les listes de contrôle d'accès uniquement dans pg_restore. Vous pouvez également modifier le catalogue avec --listsi vous avez besoin de plus de détails.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.