web-dev-qa-db-ja.com

postgres-ロールなしのpg_dumpおよびpg_restore

受信データベースで適切な役割を持たずにダンプを復元しようとしています。

ここ だけでなく ここ も述べたように、--no-ownerオプションとして、pg_dumpまたはpg_restore または両方

次のコマンドラインを使用してダンプを作成しました

"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

復元線は以下の通り

"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"

ご覧のとおり、どちらにも--no-ownerオプションですが、最終的には以下のエラーが発生します

enter image description here

私をひどくバグにするのは以下のログです

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

--no-ownerが指定されましたか?

私は何か見落としてますか?

補遺:私はPostgres 9.3で実行しています

乾杯

11
Andy K

このエラーは、pg_restoreがACLを設定したときに発生します。--no-aclを使用して、GRANTコマンドを回避できます。

-Ftpg_dumpオプションを使用すると、pg_restoreでのみロールとACLをスキップできます。詳細が必要な場合は、--listを使用してカタログを編集することもできます。

13
slardiere