运行文件时PostgreSQL退出状态

Ada*_*tan 16 postgresql

当使用单个 SQL 命令运行 PostgreSQL 时,错误代码按预期返回:

% psql -c "SELECT * FROM AWDASDASDASDAS" my_db
ERROR:  relation "awdasdasdasdas" does not exist
LINE 1: SELECT * FROM AWDASDASDASDAS
% echo $?
1
Run Code Online (Sandbox Code Playgroud)

但是在运行文件时,错误被抑制:

% psql -f test.sql my_db
psql:test.sql:1: ERROR:  relation "awdasdasdasdas" does not exist
LINE 1: SELECT * FROM AWDASDASDASDAS
% echo $?
0
Run Code Online (Sandbox Code Playgroud)

知道如何恢复这些错误吗?

Ada*_*tan 13

将此添加到 SQL 文件的第一行即可解决问题:

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

新评论(谢谢!)建议以下解决方案:

-v ON_ERROR_STOP=1
-v ON_ERROR_STOP=on
Run Code Online (Sandbox Code Playgroud)

  • @pt12lol 对我来说也失败了,这确实有效:`psql -v ON_ERROR_STOP=on -f file_name.sql` (2认同)