sql >> Database teknologi >  >> RDS >> PostgreSQL

Gendan PostgreSQL db fra sikkerhedskopiering uden problem med begrænsning af en fremmednøgle

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.



  1. deaktiver BEMÆRKNINGER i psql-output

  2. [Video] Ansible og PostgreSQL

  3. Django datetime felt - konverter til tidszone i visning

  4. Hvad er dine yndlings Ruby on Rails-bøger og hvorfor?