次のコマンドを使用して、別のサーバー上のデータベースにバックアップを作成しましたが、必要な役割とは異なります。
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
しかし、復元を実行すると、次のエラーが発生します。
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