Sepertinya Anda mendapatkan dump SQL daripada dump biner dari pg_dump
. Itu akan memberi Anda tumpukan besar SQL dengan skema (termasuk FK) di bagian atas diikuti oleh sekelompok INSERT untuk memuat ulang data. Dump biner dari pg_dump
akan melayani Anda dengan lebih baik, sepertinya Anda memerlukan sedikit konfigurasi tambahan untuk memberi tahu PhpPgAdmin di mana pg_dump
adalah. Kemudian Anda akan memasukkan dump biner itu ke pg_restore
dan pg_restore
akan membangun kembali semuanya dalam urutan yang benar untuk menghindari masalah integritas referensial (atau, lebih tepatnya, pg_restore
akan mengembalikan semua data kemudian menambahkan batasan).
PhpPgAdmin sepertinya ingin bekerja dengan dump SQL biasa
daripada pg_restore
. Saya merasa ini sulit dipercaya tetapi saya tidak dapat menemukan apa pun dalam dokumentasi tentang menjalankan pg_restore
. Jika ini benar, maka Anda mungkin harus mengedit SQL dump dengan tangan dan memindahkan semua FK sampai akhir.
Anda juga dapat mencoba menambahkan SET CONSTRAINTS ALL DEFERRED;
di bagian atas dump SQL Anda, yang akan menunda pemeriksaan batasan hingga akhir transaksi, Anda juga ingin memastikan bahwa seluruh blok INSERT terkandung dalam suatu transaksi.
Jika PhpPgAdmin benar-benar tidak dapat memanggil pg_restore
maka Anda lebih baik menggunakan menggunakan pg_dump
dan pg_restore
dengan tangan sehingga Anda memiliki kontrol yang diperlukan atas prosedur pencadangan Anda. Maaf, tetapi alat admin basis data apa pun yang tidak dapat menangani pencadangan basis data dengan FK lebih buruk daripada tidak berguna. Mudah-mudahan seseorang yang tahu tentang PhpPgAdmin akan muncul dan memberi tahu kami cara menggunakan pg_restore
dengan PhpPgAdmin.