Подтвердить что ты не робот

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

Как я могу указать его, чтобы он менял владельца? Или это невозможно?

4b9b3361

Ответ 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