Det lyder som om du får et SQL-dump i stedet for et binært dump fra pg_dump
. Det ville give dig en stor bunke SQL med skemaet (inklusive FK'er) øverst efterfulgt af en masse INSERT'er for at genindlæse dataene. Et binært dump fra >pg_dump
ville tjene dig bedre, det ser ud til, at du har brug for lidt ekstra konfiguration for at fortælle PhpPgAdmin hvor pg_dump
er. Så ville du føre det binære dump ind i pg_restore
og pg_restore
ville genopbygge alt i den rigtige rækkefølge for at undgå problemer med referenceintegritet (eller mere præcist pg_restore
ville gendanne alle data og derefter tilføje begrænsningerne).
PhpPgAdmin ser ud til at ville arbejde med almindelige SQL-dumps
i stedet for pg_restore
. Jeg har svært ved at tro, men jeg kan ikke finde noget i dokumentationen om at påkalde pg_restore
. Hvis dette er sandt, bliver du sandsynligvis nødt til at redigere SQL-dumpet i hånden og flytte alle FK'erne til slutningen.
Du kan også prøve at tilføje SET CONSTRAINTS ALL DEFERRED;
øverst i din SQL-dump, som skulle forsinke kontrol af restriktioner indtil slutningen af transaktionen, vil du også gerne sikre dig, at hele blokken af INSERT'er er indeholdt i en transaktion.
Hvis PhpPgAdmin virkelig ikke kan kalde pg_restore
så er det bedre at bruge pg_dump
og pg_restore
i hånden, så du har den nødvendige kontrol over dine sikkerhedskopieringsprocedurer. Beklager, men ethvert databaseadministrationsværktøj, der ikke kan håndtere sikkerhedskopiering af en database med FK'er, er værre end ubrugeligt. Forhåbentlig vil nogen, der kender deres vej rundt i PhpPgAdmin, dukke op og fortælle os, hvordan man bruger pg_restore
med PhpPgAdmin.