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 le --no-owner
en option, soit dans pg_dump
ou pg_restore
ou 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 le --no-owner
option mais finalement, j'ai l'erreur ci-dessous
Ce qui me dérange le plus, c'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 le --no-owner
a été spécifié?
Ai-je oublié quelque chose?
Addendum: je cours sur Postgres 9.3
À votre santé
L'erreur se produit lorsque pg_restore
définissez les ACL: vous pouvez utiliser --no-acl
pour empêcher les commandes GRANT
.
Avec le -Ft
option dans 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 --list
si vous avez besoin de plus de détails.