1. ホーム
  2. database

[解決済み] Postgresql - データベースをバックアップし、異なる所有者にリストア?

2022-09-26 05:02:40

質問

私はこのコマンドで、別のサーバーにある、私が必要とするのとは異なる役割を持つデータベースをバックアップしました。

pg_dump -Fc db_name -f db_name.dump

次に、データベースを復元する必要がある別のサーバーにバックアップをコピーしましたが、そのデータベースに使用されていた所有者がいません。例えば、データベースがオーナー owner1 があるとします。しかし、別のサーバーでは owner2 があり、そのデータベースを復元し、所有者を変更する必要があります。

別のサーバーでリストアするときにやったこと。

createdb -p 5433 -T template0 db_name 
pg_restore -p 5433 --role=owner2 -d db_name db_name.dump

しかし、restoreを実行すると、このようなエラーが発生します。

pg_restore: [archiver (db)] could not execute query: ERROR:  role "owner1" does not exist

オーナーチェンジするように指定するにはどうしたらいいでしょうか?それとも不可能なのでしょうか?

どのように解決するのですか?

を使用する必要があります。 --no-owner オプションを使ってください。 pg_restore がオブジェクトの所有権を元の所有者に設定しようとするのを止めます。 その代わりに、オブジェクトの所有者は --role

createdb -p 5433 -T template0 db_name 
pg_restore -p 5433 --no-owner --role=owner2 -d db_name db_name.dump

pg_restore doc