Невозможно восстановить базу данных psql из pg_dump с другим именем пользователя - PullRequest
0 голосов
/ 29 сентября 2018

Мне нужно вывести базу данных postgres с компьютера1 с именем пользователя postgres1, а затем восстановить ее на компьютере2 с именем пользователя postgres2.Я продолжаю сталкиваться с ошибкой, которая выглядит так, будто файл резервной копии хочет использовать имя пользователя1:

Когда я запускаю это на компьютере2:

psql dbname < backupname.pgsql

Я получаю эту ошибку:

ERROR:  role "username1" does not exist

Я пытался:

// Dumping from computer1:

pg_dump dbname > backupname.sql
pg_dump dbname > backupname.pgsql
pg_dump -U username1 dbname -N topology -T spacial_ref_sys > backupname.pgsql


// Restoring on computer2:

psql dbname < backupname.pgsql

Нужно ли изменить дамп или восстановление, чтобы обойти это?

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Если вы используете pgAdmin, вы можете либо снять флажок в DumpOptions # 2 с владельцем, либо иным образом удалить привилегию, например --no-privileges, и удалить владение, например --no-password, в запросе дампа, например
/usr/bin/pg_dump --host localhost --port 5432 --username "postgres" --no-password --format custom --no-privileges --no-tablespaces --verbose --file "as" "databasename".Кроме того, если у вас есть ограничения для таблицы, отключите триггеры также при создании дампа.

Если вы не можете создать другую резервную копию базы данных, то альтернативный способ состоит в том, чтобы реплицировать владельца и роли сброшенной базы данных в новуюбаза данных.Если вы этого не сделаете, то получите сообщение « ACL не существует » (не уверен, как это было давно)

0 голосов
/ 29 сентября 2018

Проблема с демпингом.С учетом этого поста я смог решить эту проблему, используя:

// On Computer1

pg_dump dbname -O -x > backupname.sql


// On Computer2

psql dbname < backupname.sql

Флаги параметров, используемые с pg_dump:

-O   <-- No owner
         Do not output commands to set ownership of objects to match the original database

-x   <-- No privileges
         Prevent dumping of access privileges (grant/revoke commands)

См. Документы PostgreSQL для pg_dump для получения дополнительной информации о флагах параметров.

...