Postgres: Exit-Code ungleich Null beim Ausführen einer SQL-Datei?


34

Ich schreibe ein Shell-Skript, das mit 2 Formen psql aufruft ... eine per Befehl (-c), die andere per Datei (-f).

zB psql -c "create table foo (bar integer)"

psql -f foobar.sql

Ein Unterschied zwischen diesen Formularen besteht darin, dass ein Aufruf per Befehl (-c) einen Exit-Code ungleich Null zurückgibt, wenn ein Fehler auftritt, während ein Aufruf per Datei (-f) immer Null zurückzugeben scheint.

Ich frage mich, ob es eine Problemumgehung für dieses Verhalten gibt. (dh es wird ein Wert ungleich Null zurückgegeben, wenn beim Ausführen einer Datei ein Fehler auftritt).

Vielen Dank.

Antworten:


37

Sie können die folgende Anweisung verwenden.

psql -v ON_ERROR_STOP=1 -f foobar.sql

Dies gibt den korrekten Rückkehrcode zurück, auch wenn die foobar.sqlDatei ON_ERROR_STOPoben in der Datei nicht aktiviert ist .


21

Ich habe herausgefunden, wie ich das beheben kann.

Ich muss ON_ERROR_STOPoben in der Datei aktivieren .

Beispiel:

\set ON_ERROR_STOP true

+1 für das Betrachten der Manpage :)
Serverhorror

+1 für die beste Lösung, da ich die Variable im Skript festlegen kann, damit ich darauf vertrauen kann, dass sie immer korrekt ausgeführt wird und mich nicht um den Laufzeitkontext kümmern muss.
Brandon
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.