Пополнение базы данных Postgres исходными данными для тестирования - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь создать несколько интеграционных тестов для моего приложения, и часть этого я хочу, чтобы заполнить мою заявку каждый раз тесты запускаются. Однако база данных должна оставаться подключенной, поэтому dropdb / createdb не вариант.

Я сейчас занимаюсь:

pg_dump -F custom -O -x -d test-db > ./tests/test-db

до испытания и:

pg_restore --clean -d test-db ./tests/test-db

Для восстановления БД после каждого запуска теста.

Однако, похоже, это не работает, так как команда pg_restore выдает много ошибок:

pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 3771; 2618 175960 RULE skilled_outcome_group _RETURN dan
pg_restore: [archiver (db)] could not execute query: ERROR:  cannot drop rule _RETURN on view public.skilled_outcome_group because view public.skilled_outcome_group requires it
pg_restore: [archiver (db)] Error from TOC entry 184; 1259 174070 TABLE outcome_group_skill dan
pg_restore: [archiver (db)] could not execute query: ERROR:  cannot drop table public.outcome_group_skill because other objects depend on it

И так продолжается ... Я думал, --clean предназначено, чтобы полностью отбросить все, однако pg_restore жалуется, что не может удалить таблицы / представления? Что-то не так с моей комбинацией флагов в pg_dump / pg_restore?

1 Ответ

0 голосов
/ 01 мая 2018

pg_restore может использоваться для генерации сценария экспорта, и в этом случае могут использоваться некоторые флаги, такие как --clean. документ говорит

Этот вывод сценария эквивалентен формату вывода простого текста pg_dump. Поэтому некоторые параметры, управляющие выводом аналог опций pg_dump.

Когда вы запускаете pg_restore для восстановления БД, он может применять только те команды, которые существуют в сценарии.

Вам нужно будет запустить pg_dump с параметром --clean, чтобы эта команда применялась при восстановлении БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...