Check return status of psql command in unix shell scripting Check return status of psql command in unix shell scripting postgresql postgresql

Check return status of psql command in unix shell scripting


psql return code is documented as:

EXIT STATUS
psql returns 0 to the shell if it finished normally, 1 if a fatal error of its own occurs (e.g. out of memory, file not found), 2 if the connection to the server went bad and the session was not interactive, and 3 if an error occurred in a script and the variable ON_ERROR_STOP was set.

You probably just want to use ON_ERROR_STOP.

Failure getting tested and reported to the shell:

$ psql -d test -v "ON_ERROR_STOP=1" <<EOFselect error;select 'OK';EOFERROR:  column "error" does not existLINE 1: select error;$ echo $?3

Failure getting ignored and not reported to the shell:

$ psql -d test  <<EOFselect error;select 'OK';EOFERROR:  column "error" does not existLINE 1: select error;               ^ ?column? ---------- OK(1 row)$ echo $?0


As mentioned here, you can also add this line at the top of your SQL file/script:

\set ON_ERROR_STOP true