Ошибка pg_restore PostgreSQL от pgadmin4, показывающая, что роль не существует - PullRequest
1 голос
/ 10 июля 2019

Я пытаюсь восстановить базу данных из одной схемы в другую в postgresql , используя pgadmin утилиту резервного копирования и восстановления. Резервное копирование успешно выполнено для базы данных A , но когда я пытаюсь восстановить ее в другую базу данных B , я получаю сообщение об ошибке, как показано ниже.

Кто-нибудь знает об этом или сталкивался с подобной проблемой раньше?

Я попытался изменить параметры восстановления, например

  1. Не сохранять владельца как да
  2. Привилегии да и т. Д., Но все же не повезло.

Пример:

pg_restore: создание ТАБЛИЦЫ "public.app_role" pg_restore: [архиватор (дБ)] Ошибка записи ТОС 227; 1259 197811 ТАБЛИЦА app_role расписание pg_restore: [archiver (db)] не удалось выполнить запрос: ERROR: роль «расписание» не существует Команда была: ALTER TABLE public.app_role ВЛАДЕЛЕЦ ПО графику;

Спасибо

1 Ответ

1 голос
/ 10 июля 2019

В PostgreSQL пользователи и табличные пространства не являются частью базы данных, поэтому они не включаются в вывод pg_dump.

Вам нужно будет запустить pg_dumpall -a, чтобы получить дамп этих объектов.Сначала примените этот дамп, затем он должен работать.

В качестве альтернативы, используйте параметры -O -x из pg_restore, чтобы пропустить восстановление владения и разрешений.Тогда объекты будут принадлежать пользователю, который запустил pg_restore.

...