Wenn ich versuche, pg_restore.exe
eine Speicherauszugsdatei aus einer Datenbank auszuführen , werden Dutzende von Fehlern ausgegeben.
ERROR: insert or update on table "someTable" violates foreign key constraint "aConstraintName"
Dies liegt offensichtlich an der Tatsache, dass ich die Datenbank vor dem Wiederherstellen aus der Sicherungsdatei geleert habe (diese Datei stammt aus einer Produktionsdatenbank) ... dann kann natürlich keine Fremdschlüsselbeschränkung in Ordnung sein, wenn eine referenzierte Tabelle leer ist ...
Gibt es eine Möglichkeit, die Einschränkungen und alle Fremdschlüssel für alle Tabellen zu deaktivieren, bevor ich aufrufe pg_restore.exe
, und anschließend die Einschränkungen und Fremdschlüssel wieder zu aktivieren.
In SO habe ich etwas Interessantes gefunden: Verschieben der Einschränkungsüberprüfung, um Zeit festzusetzen . Aber ich glaube nicht, dass ich pg_restore.exe
von innen anrufen kann, psql.exe
nachdem ich die Einschränkungen aufgeschoben habe.
Es gibt auch diesen Beitrag von vor 10 Jahren, der vorschlägt, die Einschränkungen fallen zu lassen und sie dann wieder hinzuzufügen. Oder den Wert von pg_class reltriggers auf 0 zu ändern, und das wäre auch für Einschränkungen möglich ... aber ich fürchte, es ist mehr Hacking als gute Praxis ...
Was raten Sie, was ist in diesem Fall die beste Vorgehensweise? Wird pg_dump.exe
mit dem -clean
Flag ein Speicherauszug erstellt, der die Überprüfung der Einschränkungen beim Wiederherstellen der Datenbank umgeht?