Postgres:SQLファイルの実行時にゼロ以外の終了コード?


34

2つのフォームを使用してpsqlを呼び出すシェルスクリプトを記述しています... 1つはコマンド(-c)、もう1つはファイル(-f)です。

例:psql -c "create foo(bar integer)"

psql -f foobar.sql

これらの形式の1つの違いは、エラーが発生した場合、コマンド(-c)による呼び出しはゼロ以外の終了コードを返し、ファイル(-f)による呼び出しは常にゼロを返すように見えることです。

この動作に回避策があるかどうか疑問に思っていますか?(つまり、ファイルの実行中にエラーが発生した場合、ゼロ以外を返します)。

ありがとう。

回答:


37

以下のステートメントを使用できます。

psql -v ON_ERROR_STOP=1 -f foobar.sql

これにより、ファイルがファイルの先頭でfoobar.sql有効ON_ERROR_STOPになっていない場合でも、正しいリターンコードが返されます。


21

これを解決する方法を見つけました。

ON_ERROR_STOPファイルの上部で有効にする必要があります。

例:

\set ON_ERROR_STOP true

マンページを見るための+1 :)
serverhorror

+1を使用する、スクリプトで変数を設定できるため、常に正しく実行され、ランタイムコンテキストを心配する必要がないため、最適なソリューションが得られます。
ブランドン14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.