Answers:
我认为向.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
我认为您正在使用psql
,这可能很方便添加到~/.psqlrc
文件中。
\set ON_ERROR_STOP on
这将使其在第一个错误时中止。如果您没有它,即使进行事务处理,它也将继续执行您的脚本,但在脚本结束之前,所有操作都会失败。
您可能想要使用Paul所说的交易。psql --single-transaction ...
如果您不想更改脚本,也可以这样做。
如此完整的示例,您的.psqlrc中带有ON_ERROR_STOP:
psql --single-transaction --file /your/script.sql
--single-transaction
使用-v ON_ERROR_STOP=1
了非零状态, 它仍然是必要的
我一直喜欢直接参考手册。
退出状态
如果psql正常完成,它将返回0到shell;如果发生自身的致命错误(例如,内存不足,找不到文件),则返回1;如果与服务器的连接断开并且会话不是交互式的,则返回2;如果返回3,则返回3。脚本中发生错误,并设置了变量ON_ERROR_STOP。
默认情况下,如果您在PostgreSQL服务器上运行的sql代码错误psql不会退出错误。它将捕获错误并继续。如上所述,如果将ON_ERROR_STOP
设置设置为on,则当psql在sql代码中捕获错误时,它将退出并返回3
到Shell。
-v ON_ERROR_STOP=ON
至少也适用于9.2。我怀疑允许使用布尔值“ true”的任何变体。