2つのフォームを使用してpsqlを呼び出すシェルスクリプトを書いています... 1つはコマンド(-c)によるもので、もう1つはファイル(-f)によるものです。
例えばpsql -c "テーブルfoo(バー整数)を作成"
psql -f foobar.sql
これらの形式の違いの1つは、エラーが発生した場合、コマンドによる呼び出し(-c)はゼロ以外の終了コードを返しますが、ファイルによる呼び出し(-f)は常にゼロを返すようです。
この動作の回避策はありますか? (つまり、ファイルの実行中にエラーが発生した場合はゼロ以外を返します)。
ありがとう。
これを解決する方法を見つけました。
ファイルの上部でON_ERROR_STOP
を有効にする必要があります。
例:
\set ON_ERROR_STOP true
以下のステートメントを使用できます。
psql -v ON_ERROR_STOP=1 -f foobar.sql
これは正しいリターンコードを返しますfoobar.sql
ファイルが有効になっていませんON_ERROR_STOP
ファイルの先頭。