Коли я намагаюся виконати pg_restore.exe
дамп-файл із бази даних, він видає десятки помилок, все одно:
ERROR: insert or update on table "someTable" violates foreign key constraint "aConstraintName"
Це, очевидно, пов'язано з тим, що я очистив базу даних, перш ніж відновити її з дамп-файлу (цей файл походить із виробничої бази даних) ... то, звичайно, жодне обмеження зовнішніх ключів не може бути нормальним, якщо одна посилана таблиця порожня ...
Чи є спосіб відключити обмеження та всі зовнішні ключі для всіх таблиць, перш ніж я подзвоню pg_restore.exe
, і після цього знову ввімкніть обмеження та зовнішні ключі.
У SO я знайшов щось цікаве: відстрочку перевірки обмежень на час здійснення часу . Але я не думаю, що я можу зателефонувати pg_restore.exe
зсередини psql.exe
після відстрочки обмежень.
Існує також ця посада , датовану 10 років тому, що пропонує відмовитись, а потім знову додати обмеження. Або змінити значення регтригерів pg_class на 0, і це також було б можливим для обмежень ... але я боюся, що це більше хакерства, ніж хорошої практики ...
Що ви радите, яка найкраща практика в цьому випадку? Чи за pg_dump.exe
допомогою -clean
прапора створюється дамп, який обходить перевірку обмежень під час відновлення бази даних?