![Postgres:执行 SQL 文件时退出代码非零?](https://linux22.com/image/484828/Postgres%EF%BC%9A%E6%89%A7%E8%A1%8C%20SQL%20%E6%96%87%E4%BB%B6%E6%97%B6%E9%80%80%E5%87%BA%E4%BB%A3%E7%A0%81%E9%9D%9E%E9%9B%B6%EF%BC%9F.png)
我正在编写一个 shell 脚本,它使用两种形式调用 psql...一种是通过命令 (-c),另一种是通过文件 (-f)。
例如 psql -c“创建表 foo (bar 整数)”
psql -f foobar.sql
这些形式之间的一个区别是,如果遇到错误,命令调用(-c)将返回非零退出代码,而文件调用(-f)似乎总是返回零。
我想知道是否有解决此行为的方法?(即,如果在执行文件时发生错误则返回非零)。
谢谢。
答案1
您可以使用以下语句。
psql -v ON_ERROR_STOP=1 -f foobar.sql
即使文件顶部foobar.sql
未启用该文件,这也将返回正确的返回代码。ON_ERROR_STOP
答案2
我找到了解决这个问题的方法。
我需要ON_ERROR_STOP
在文件顶部启用。
例子:
\set ON_ERROR_STOP true