Postgres:非零退出代码执行一个SQL文件时?

我正在写一个shell脚本,使用2个窗体调用psql …一个是通过命令(-c),另一个是通过文件(-f)。

例如psql -c“create table foo(bar integer)”

psql -f foobar.sql

这些forms之间的一个区别是,如果遇到错误,通过命令调用(-c)将返回非零的退出代码,而文件调用(-f)总是返回零。

我想知道是否有这种行为的解决方法? (即如果执行文件时发生错误,则返回非零值)。

谢谢。

你可以使用下面的语句。

psql -v ON_ERROR_STOP=1 -f foobar.sql 

这将返回正确的返回码,即使foobar.sql文件不启用文件顶部的ON_ERROR_STOP

我发现如何解决这个问题。

我需要在文件的顶部启用ON_ERROR_STOP

例:

 \set ON_ERROR_STOP true