sql >> Databáze >  >> RDS >> PostgreSQL

Obnovte PostgreSQL db ze zálohy bez problému s omezením cizího klíče

Zní to, jako byste místo binárního výpisu z pg_dump získali výpis SQL . To by vám dalo velkou hromadu SQL se schématem (včetně FK) nahoře, za kterým by následovala spousta INSERTů pro opětovné načtení dat. Binární výpis z pg_dump by vám posloužilo lépe, vypadá to, že potřebujete trochu extra konfigurace, abyste řekli PhpPgAdmin, kde pg_dump je. Potom byste tento binární výpis vložili do pg_restore a pg_restore by vše znovu sestavil ve správném pořadí, aby se předešlo problémům s referenční integritou (nebo přesněji pg_restore obnoví všechna data a poté přidá omezení).

Zdá se, že PHPPgAdmin chce pracovat s obyčejnými výpisy SQL spíše než pg_restore . Těžko tomu uvěřím, ale v dokumentaci nemohu najít nic o vyvolání pg_restore . Pokud je to pravda, budete pravděpodobně muset ručně upravit výpis SQL a přesunout všechny FK na konec.

Můžete také zkusit přidat SET CONSTRAINTS ALL DEFERRED; v horní části vašeho výpisu SQL, což by mělo zpozdit kontrolu omezení až do konce transakce, budete se také chtít ujistit, že celý blok INSERTů je obsažen v transakci.

Pokud PhpPgAdmin opravdu nemůže vyvolat pg_restore pak je lepší použít pg_dump a pg_restore ručně, abyste měli nezbytnou kontrolu nad postupy zálohování. Promiňte, ale jakýkoli nástroj pro správu databáze, který si neporadí se zálohováním databáze pomocí FK, je horší než zbytečný. Doufejme, že se objeví někdo, kdo se vyzná v PhpPgAdmin a dá nám vědět, jak používat pg_restore pomocí PhpPgAdmin.



  1. Měřítko desetinné hodnoty mělo za následek zkrácení dat prostřednictvím ODBC

  2. Propojení PostgreSQL 9.2.1 s Hibernate

  3. Proč st_intersection vrací nepolygony?

  4. Jak uložit soubor obrázku do databáze v php?