Bir pg_restore.exeveritabanından döküm dosyasını yürütmeye çalıştığımda , düzinelerce hata atıyor, hepsi aynı:
ERROR: insert or update on table "someTable" violates foreign key constraint "aConstraintName"
Bunun nedeni, veri tabanını döküm dosyasından geri yüklemeden önce boşalttığımdan kaynaklanmaktadır (bu dosya bir üretim veritabanından gelir) ... sonra referans verilen bir tablo boşsa, hiçbir yabancı anahtar kısıtlaması tamam olamaz ...
Tüm tablolar için kısıtlamaları ve tüm yabancı anahtarları devre dışı bırakmanın bir yolu var mı? Aramadan önce pg_restore.exeve sonra, kısıtlamaları ve yabancı anahtarları yeniden etkinleştirin.
SO'da ilginç bir şey buldum: zaman ayırmak için kısıt kontrolünü erteleme . Ama kısıtlamaları erteledikten sonra pg_restore.exeiçeriden arayabileceğimi sanmıyorum psql.exe.
Ayrıca, 10 yıl öncesine ait, kısıtlamaları bırakıp yeniden eklemenizi öneren bu yazı da var . Veya pg_class reltriggers değerini 0 olarak değiştirmek ve bu kısıtlamalar için de mümkün olur ... ama korkarım iyi uygulamadan daha hack'tir ...
Ne tavsiye edersiniz, bu durumda en iyi uygulama nedir? Kullanıyor pg_dump.exe olan -cleanbayrak veritabanını geri yüklerken kontrol kısıtlamaları atlar bir dökümü oluşturur?