Я сделал резервную копию базы данных на другом сервере, который имеет другую роль, чем мне нужно, с помощью этой команды:
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
что предлагается в принятом ответе, вам также может понадобиться--no-privileges
. Смотрите этот ответ