Postgres: codice di uscita diverso da zero durante l'esecuzione di un file sql?


34

Sto scrivendo uno script di shell che effettua chiamate a psql usando 2 moduli ... uno è per comando (-c), l'altro per file (-f).

ad esempio psql -c "create table foo (bar integer)"

psql -f foobar.sql

Una differenza tra questi moduli è che una chiamata per comando (-c) restituisce un codice di uscita diverso da zero se si verifica un errore, mentre una chiamata per file (-f) sembra sempre restituire zero.

Mi chiedo se esiste una soluzione alternativa per questo comportamento? (ovvero restituisce un valore diverso da zero se si verifica un errore durante l'esecuzione di un file).

Grazie.

Risposte:


37

È possibile utilizzare la seguente istruzione.

psql -v ON_ERROR_STOP=1 -f foobar.sql

Ciò restituirà il codice di ritorno corretto anche se il foobar.sqlfile non viene abilitato ON_ERROR_STOPnella parte superiore del file.


21

Ho scoperto come risolverlo.

Devo abilitare ON_ERROR_STOPnella parte superiore del file.

Esempio:

\set ON_ERROR_STOP true

+1 per guardare la manpage :)
serverhorror

+1 per la migliore soluzione perché mi consente di impostare la variabile nello script, quindi posso fidarmi che funziona sempre correttamente e non devo preoccuparmi del contesto di runtime.
Brandon,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.