检查unix shell脚本中psql命令的返回状态

Nav*_* CH 20 postgresql shell

我使用psql命令连接并在postgreSQL数据库上发出查询.任何人都可以告诉我如何检查shell脚本中执行的查询的返回状态.

我用echo $?命令来检查状态,但它总是返回零.

谢谢您的帮助.

Dan*_*ité 37

psql返回代码记录为:

退出状态
PSQL返回0到外壳是否正常完成,1如果发生了自己的致命错误(如内存不足,未找到文件),2,如果到服务器的连接失效而且会话没有互动性, 3如果脚本中发生错误并且设置了变量ON_ERROR_STOP.

您可能只想使用ON_ERROR_STOP.

未通过测试并报告给shell:

$ psql -d test -v "ON_ERROR_STOP=1" <<EOF
select error;
select 'OK';
EOF

ERROR:  column "error" does not exist
LINE 1: select error;

$ echo $?
3
Run Code Online (Sandbox Code Playgroud)

失败被忽略而没有报告给shell:

$ psql -d test  <<EOF
select error;
select 'OK';
EOF
ERROR:  column "error" does not exist
LINE 1: select error;
               ^
 ?column? 
----------
 OK
(1 row)

$ echo $?
0
Run Code Online (Sandbox Code Playgroud)


Mar*_*Roy 6

正如这里提到的,您还可以在 SQL 文件/脚本的顶部添加这一行:

\set ON_ERROR_STOP true
Run Code Online (Sandbox Code Playgroud)