web-dev-qa-db-ja.com

Postgres:SQLファイルを実行するときのゼロ以外の終了コード?

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

例えばpsql -c "テーブルfoo(バー整数)を作成"

psql -f foobar.sql

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

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

ありがとう。

34
Jin Kim

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

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

例:

\set ON_ERROR_STOP true
21
Jin Kim

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

psql -v ON_ERROR_STOP=1 -f foobar.sql

これは正しいリターンコードを返しますfoobar.sqlファイルが有効になっていませんON_ERROR_STOPファイルの先頭。

37
Taye