Postgres SQL脚本错误失败
有没有一种方法来指定,当遇到脚本的第一个错误时它停止执行一个SQL脚本,它通常会继续,无论以前的错误。
谢谢
我认为将以下内容添加到.psqlrc的解决scheme远非完美
\set ON_ERROR_STOP on
有更简单便捷的方法 – 使用psql参数:
psql -v ON_ERROR_STOP=1
最好使用-X
参数closures.psqlrc文件的使用。 为我完美的作品
PS从彼得Eisentraut伟大的职位find解决scheme。 谢谢,彼得! http://petereisentraut.blogspot.com/2010/03/running-sql-scripts-with-psql.html
我假设你正在使用psql
,这可能是方便添加到您的~/.psqlrc
文件。
\set ON_ERROR_STOP on
这会使第一个错误中止。 如果你没有它,即使有一个事务,它将继续执行你的脚本,但是一切都会失败,直到脚本结束。
保罗说,你可能想用一个交易。 这也可以用psql --single-transaction ...
来完成psql --single-transaction ...
如果你不想改变脚本。
所以一个完整的例子,在你的.psqlrc中有ON_ERROR_STOP:
psql --single-transaction --file /your/script.sql
这不正是你想要的,但如果你开始你的脚本begin transaction;
并以end transaction;
,在第一个错误之后,它实际上会跳过所有的东西,然后它会在错误之前回滚它所做的一切。