Estado de salida de PostgreSQL al ejecutar un archivo

16

Cuando se ejecuta PostgreSQL con un solo comando SQL, los códigos de error se devuelven como se esperaba:

% psql -c "SELECT * FROM AWDASDASDASDAS" my_db
ERROR:  relation "awdasdasdasdas" does not exist
LINE 1: SELECT * FROM AWDASDASDASDAS
% echo $?
1

Pero cuando se ejecuta un archivo, el error se suprime:

% psql -f test.sql my_db
psql:test.sql:1: ERROR:  relation "awdasdasdasdas" does not exist
LINE 1: SELECT * FROM AWDASDASDASDAS
% echo $?
0

¿Alguna idea de cómo recuperar estos errores?

Adam Matan
fuente

Respuestas:

12

Agregar esto a la primera línea del archivo SQL hace el truco:

\set ON_ERROR_STOP 1

Nuevos comentarios (¡Gracias!) Sugieren las siguientes soluciones:

-v ON_ERROR_STOP=1
-v ON_ERROR_STOP=on
Adam Matan
fuente
2
@ pt12lol Eso también falló para mí, esto funcionó:psql -v ON_ERROR_STOP=on -f file_name.sql
Morgen