Postgresql - резервная база данных и восстановление на другом владельце?
Я делал резервное копирование в базе данных на другом сервере и имел другую роль, чем мне нужно, с помощью этой команды:
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
Как я могу указать его, чтобы он менял владельца? Или это невозможно?
Ответы
Ответ 1
Вы должны использовать опцию --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