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******[email protected]: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é

Andy K
la source

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.

slardiere
la source