Звучи сякаш получавате 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.