sql >> Databasteknik >  >> RDS >> PostgreSQL

Återställ PostgreSQL db från säkerhetskopia utan problem med främmande nyckel

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.



  1. MySQL-fel #1054 - Okänd kolumn i "Fältlista"

  2. MySQL XDevAPI Hur man returnerar en framgångsrik status

  3. ORA-01843:inte en giltig månad när du anger ett datum i Oracle

  4. syftet med sammanställning i Postgres