проблема с кодом выхода pg_restore при наличии предупреждений

команды:

bin/pg_dump -b -o -Fc -Z 0 -p 5333 -U user template1 -f db.dump
bin/pg_restore -c  -h localhost -p 5333 -U user -d template1 db.dump 

последовали следующие шаги:

  1. добавить новые таблицы в БД и сделать дамп

  2. удалить только что добавленные таблицы

  3. попробуй восстановить с помощью файла дампа

  4. восстановление завершено с кодом 1, но таблицы все еще успешно восстанавливаются.

ошибка в pg_restore:
pg_restore: [archiver (db)] не удалось выполнить запрос: err-1: таблица "test1" не существует
Команда была: DROP TABLE public.test1;
ПРЕДУПРЕЖДЕНИЕ : ошибки игнорируются при восстановлении: 2

Является ли это ожидаемым поведением для функции дампа/восстановления с шагами добавления/удаления таблиц?


person Ras Ram    schedule 19.01.2015    source источник
comment
Попробуйте удалить опцию -c (--clean) из pg_restore. Если таблица еще не существовала, то попытка DROP TABLE, созданная -c, приведет к ошибке.   -  person IanB    schedule 09.08.2018


Ответы (1)


Использование pg_restore может быть головной болью, если таблицы вашей целевой БД лишь частично перекрываются с таблицами в дампе.

Использование флага --clean лишь частично решает проблему, но вы все равно можете столкнуться с ошибками для несуществующих таблиц.

На мой взгляд, лучше всего удалить целевую БД (или каскадно удалить целевую схему) и выполнить восстановление.

Аналогичный вопрос, который вы можете рассмотреть: будет ли pg_restore перезаписывать существующие таблицы?< /а>

person Luke    schedule 26.09.2018