Sembra che tu stia ricevendo un dump SQL anziché un dump binario da pg_dump
. Ciò ti darebbe una grande quantità di SQL con lo schema (inclusi gli FK) in alto seguito da un gruppo di INSERT per ricaricare i dati. Un dump binario da pg_dump
ti servirebbe meglio, sembra che tu abbia bisogno di un po' di configurazione extra per dire a PhpPgAdmin dove pg_dump
è. Quindi inseriresti quel dump binario in pg_restore
e pg_restore
ricostruirebbe tutto nell'ordine corretto per evitare problemi di integrità referenziale (o, più precisamente, pg_restore
ripristinerebbe tutti i dati, quindi aggiungerebbe i vincoli).
PhpPgAdmin sembra voler lavorare con semplici dump SQL
anziché pg_restore
. Lo trovo difficile da credere ma non riesco a trovare nulla nella documentazione sull'invocazione di pg_restore
. Se questo è vero, probabilmente dovrai modificare manualmente il dump SQL e spostare tutti gli FK alla fine.
Potresti anche provare ad aggiungere SET CONSTRAINTS ALL DEFERRED;
nella parte superiore del dump SQL, che dovrebbe ritardare il controllo dei vincoli fino alla fine della transazione, dovrai anche assicurarti che l'intero blocco di INSERT sia contenuto all'interno di una transazione.
Se PhpPgAdmin davvero non può invocare pg_restore
allora è meglio usare pg_dump
e pg_restore
manualmente in modo da avere il controllo necessario sulle procedure di backup. Siamo spiacenti ma qualsiasi strumento di amministrazione del database che non è in grado di gestire il backup di un database con FK è peggio che inutile. Si spera che qualcuno che conosce PhpPgAdmin si presenti e ci faccia sapere come usare pg_restore
con PhpPgAdmin.