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.