Quando provo a eseguire pg_restore.exe
un file di dump da un database, genera dozzine di errori, lo stesso:
ERROR: insert or update on table "someTable" violates foreign key constraint "aConstraintName"
Ciò è ovviamente dovuto al fatto che ho svuotato il database prima di ripristinarlo dal file di dump (questo file proviene da un database di produzione) ... quindi ovviamente nessun vincolo di chiavi esterne può essere ok se una tabella di riferimento è vuota ...
Esiste un modo per disabilitare i vincoli e tutte le chiavi esterne, per tutte le tabelle, prima che io chiami pg_restore.exe
e, successivamente, riattivare i vincoli e le chiavi esterne.
In SO ho trovato qualcosa di interessante: rinviare il controllo dei vincoli per impegnare il tempo . Ma non credo di poter chiamare pg_restore.exe
dall'interno psql.exe
dopo aver rinviato i vincoli.
C'è anche questo post , risalente a 10 anni fa, che suggerisce di abbandonare e aggiungere nuovamente i vincoli. O per cambiare il valore di pg_class reltriggers su 0 e questo sarebbe anche possibile per i vincoli ... ma temo che sia più un hacking che una buona pratica ...
Cosa consigli, qual è la migliore pratica in questo caso? L'uso pg_dump.exe
con il -clean
flag crea un dump che ignora il controllo dei vincoli durante il ripristino del database?