Bir pg_restore.exe
veritabanı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.exe
ve 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.exe
iç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 -clean
bayrak veritabanını geri yüklerken kontrol kısıtlamaları atlar bir dökümü oluşturur?