Alf*_*she 146
我认为在.psqlrc中添加以下内容的解决方案远非完美
\set ON_ERROR_STOP on
Run Code Online (Sandbox Code Playgroud)
存在更简单方便的方法 - 使用带参数的psql:
psql -v ON_ERROR_STOP=1
Run Code Online (Sandbox Code Playgroud)
最好还使用-X参数关闭.psqlrc文件用法.适合我
ps在Peter Eisentraut的精彩帖子中找到的解决方案.谢谢你,彼得! http://petereisentraut.blogspot.com/2010/03/running-sql-scripts-with-psql.html
plu*_*dra 14
我假设您正在使用psql,这可能很方便添加到您的~/.psqlrc文件.
\set ON_ERROR_STOP on
Run Code Online (Sandbox Code Playgroud)
这将使其在第一个错误中止.如果你没有它,即使有一个事务,它将继续执行你的脚本但是在脚本结束之前一切都失败了.
保罗说,你可能想要使用交易.psql --single-transaction ...如果您不想更改脚本,也可以使用哪种方法.
这是一个完整的例子,你的.psqlrc中有ON_ERROR_STOP:
psql --single-transaction --file /your/script.sql
Run Code Online (Sandbox Code Playgroud)
这不完全是你想要的,但是如果你用脚本开始begin transaction;并结束end transaction;,它实际上会跳过第一个错误之后的所有内容,然后它会回滚它在错误之前所做的一切.
| 归档时间: |
|
| 查看次数: |
38190 次 |
| 最近记录: |