Похоже, вы получаете дамп SQL, а не двоичный дамп из pg_dump
.Это дало бы вам большую кучу SQL со схемой (включая FK) вверху, а затем кучу INSERT для перезагрузки данных.Двоичный дамп из pg_dump
будет вам полезнее, похоже, вам нужно немного дополнительной настройки, чтобы сообщить PhpPgAdmin, где pg_dump
.Затем вы передадите этот двоичный дамп в pg_restore
, а pg_restore
перестроит все в правильном порядке, чтобы избежать проблем ссылочной целостности (или, точнее, pg_restore
восстановит все данные и добавит ограничения).
Кажется, PhpPgAdmin хочет работать с простыми дампами SQL , а не pg_restore
.Мне трудно в это поверить, но я не могу найти ничего в документации о вызове pg_restore
.Если это так, то вам, вероятно, придется вручную отредактировать дамп SQL и переместить все FK до конца.
Вы также можете попробовать добавить SET CONSTRAINTS ALL DEFERRED;
вверхуваш дамп SQL, который должен задерживать проверку ограничений до конца транзакции, вы также должны убедиться, что весь блок INSERT содержится в транзакции.
Если PhpPgAdmin действительно не может вызвать pg_restore
, тогда лучше использовать вручную pg_dump
и pg_restore
, чтобы иметь необходимый контроль над процедурами резервного копирования.Извините, но любой инструмент администратора базы данных, который не может выполнить резервное копирование базы данных с помощью FK, хуже, чем бесполезен.Надеемся, что кто-то, кто знает, как обойти PhpPgAdmin, появится и расскажет, как использовать pg_restore
с PhpPgAdmin.