118

SQLスクリプトを実行するときに、スクリプトで最初のエラーが発生したときに停止するように指定する方法はありますか?以前のエラーに関係なく、通常は続行します。

4

4 に答える 4

185

.psqlrc に以下を追加するソリューションは完璧にはほど遠いと思います

\set ON_ERROR_STOP on

はるかにシンプルで便利な方法が存在します - psql をパラメータとともに使用します:

psql -v ON_ERROR_STOP=1

-X.psqlrc ファイルの使用をオフにするパラメーターも使用することをお勧めします。私にとって完璧に機能します

ps Peter Eisentraut からの素晴らしい投稿で見つかった解決策。ありがとう、ピーター! http://petereisentraut.blogspot.com/2010/03/running-sql-scripts-with-psql.html

于 2013-04-26T15:08:32.513 に答える
29

を使用していると思いますがpsql、これをファイルに追加すると便利かもしれません~/.psqlrc

\set ON_ERROR_STOP on

これにより、最初のエラーで中止されます。持っていない場合、トランザクションがあってもスクリプトを実行し続けますが、スクリプトの最後まですべて失敗します。

ポールが言ったように、おそらくトランザクションを使用したいと思うでしょう。psql --single-transaction ...スクリプトを変更したくない場合にも、これを行うことができます。

したがって、.psqlrc に ON_ERROR_STOP を指定した完全な例:

psql --single-transaction --file /your/script.sql
于 2010-12-18T23:40:15.560 に答える
9

正確には希望どおりではありませんが、スクリプトをで開始しbegin transaction;て終了するとend transaction;、最初のエラーの後は実際にはすべてスキップされ、エラーが発生する前に行ったすべてがロールバックされます。

于 2010-12-18T21:57:32.077 に答える