it-swarm-ja.com

PostgreSQLがpgadminを使用してpg_restore中にエラーを取得するpg_restore:[アーカイバ(db)]はクエリを実行できませんでした:エラー:ロールが存在しません

Pgadminバックアップおよび復元ユーティリティを使用してPostgreSQLのあるスキーマから別のスキーマにデータベースを復元しようとしています。データベースAのバックアップは成功しましたが、これを別のデータベースBに復元しようとすると、次のエラーが発生します。

サンプル:

pg_restore: creating TABLE "public.app_role"
pg_restore: [archiver (db)] Error from TOC entry 227; 1259 197811 TABLE app_role schedule
pg_restore: [archiver (db)] could not execute query: ERROR:  role "schedule" does not exist
    Command was: ALTER TABLE public.app_role OWNER TO schedule;

所有者を「はい」として保存しない、特権を「はい」などの復元オプションを変更しようとしましたが、それでもうまくいきませんでした。

誰かがこれについて知っているか、以前にこのような問題に直面したことがありますか?

1
Sunil Cyriac

バックアップで参照される役割が必要です。それらを取得するには、次のようにします。

pg_dumpall --globals-only > globals.dump

次に、pg_restore -f globals.dump <database>これにより、ソースデータベースクラスター上のすべてのロールがダンプされます。

なんらかの理由でそれができない場合は、バックアップファイルを編集して、ターゲットシステムに設定した別のscheduleロールを参照することもできます。

0
user138278