sql >> Database >  >> RDS >> PostgreSQL

Herstel PostgreSQL db vanaf een back-up zonder beperking van een externe sleutel

Het klinkt alsof je een SQL-dump krijgt in plaats van een binaire dump van pg_dump . Dat zou je een grote stapel SQL geven met het schema (inclusief FK's) bovenaan, gevolgd door een aantal INSERT's om de gegevens opnieuw te laden. Een binaire dump van pg_dump zou u beter van dienst zijn, het lijkt erop dat u wat extra configuratie nodig heeft om PhpPgAdmin te vertellen waar pg_dump is. Vervolgens voer je die binaire dump in pg_restore en pg_restore zou alles opnieuw opbouwen in de juiste volgorde om referentiële integriteitsproblemen te voorkomen (of, beter gezegd, pg_restore zou alle gegevens herstellen en vervolgens de beperkingen toevoegen).

PhpPgAdmin lijkt te willen werk met gewone SQL-dumps in plaats van pg_restore . Ik vind dit moeilijk te geloven, maar ik kan niets vinden in de documentatie over het aanroepen van pg_restore . Als dit waar is, moet u waarschijnlijk de SQL-dump handmatig bewerken en alle FK's naar het einde verplaatsen.

U kunt ook proberen SET CONSTRAINTS ALL DEFERRED; bovenaan uw SQL-dump, die de controle op beperkingen zou moeten uitstellen tot het einde van de transactie, moet u er ook voor zorgen dat het hele blok INSERT's zich in een transactie bevindt.

Als PhpPgAdmin pg_restore echt niet kan aanroepen dan kun je beter pg_dump . gebruiken en pg_restore met de hand zodat u de nodige controle heeft over uw back-upprocedures. Sorry, maar elke databasebeheerder die niet overweg kan met het maken van een back-up van een database met FK's is erger dan nutteloos. Hopelijk verschijnt er iemand die de weg weet in PhpPgAdmin en laat ons weten hoe we pg_restore moeten gebruiken met PhpPgAdmin.



  1. Hoe u alle producten met specifieke multi-attribuutwaarden kunt vinden

  2. Android Room Library kan database niet kopiëren van Asset

  3. MySQL - Hoe kolommen naar rijen ongedaan te maken?

  4. Wat zijn de beperkingen van MS Access?