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.