Det låter som att du får en SQL-dump snarare än en binär dump från pg_dump
. Det skulle ge dig en stor hög med SQL med schemat (inklusive FKs) överst följt av ett gäng INSERT för att ladda om data. En binär dump från >pg_dump
skulle tjäna dig bättre, det verkar som att du behöver lite extra konfiguration för att tala om för PhpPgAdmin var pg_dump
är. Sedan skulle du mata in den binära dumpen i pg_restore
och pg_restore
skulle bygga om allt i rätt ordning för att undvika referensintegritetsproblem (eller, mer exakt, pg_restore
skulle återställa all data och sedan lägga till begränsningarna).
PhpPgAdmin verkar vilja arbeta med vanliga SQL-dumpar
istället för pg_restore
. Jag har svårt att tro det men jag kan inte hitta något i dokumentationen om att anropa pg_restore
. Om detta är sant måste du förmodligen redigera SQL-dumpen för hand och flytta alla FK:er till slutet.
Du kan också prova att lägga till SET CONSTRAINTS ALL DEFERRED;
högst upp i din SQL-dump, som borde fördröja kontroll av restriktioner till slutet av transaktionen, vill du också se till att hela blocket med INSERT finns i en transaktion.
Om PhpPgAdmin verkligen inte kan anropa pg_restore
då är det bättre att använda pg_dump
och pg_restore
för hand så att du har nödvändig kontroll över dina säkerhetskopieringsprocedurer. Tyvärr, men alla databasadministratörsverktyg som inte kan hantera säkerhetskopiering av en databas med FK:er är värre än värdelösa. Förhoppningsvis dyker någon som känner sig runt PhpPgAdmin upp och låter oss veta hur man använder pg_restore
med PhpPgAdmin.