Postgres: ¿Código de salida distinto de cero al ejecutar un archivo sql?


34

Estoy escribiendo un script de shell que realiza llamadas a psql usando 2 formas ... una es por comando (-c), la otra es por archivo (-f).

por ejemplo, psql -c "crear tabla foo (entero de barra)"

psql -f foobar.sql

Una diferencia entre estos formularios es que una llamada por comando (-c) devuelve un código de salida distinto de cero si se encuentra un error, mientras que una llamada por archivo (-f) siempre parece devolver cero.

Me pregunto si hay una solución para este comportamiento. (es decir, devuelve un valor distinto de cero si se produce un error al ejecutar un archivo).

Gracias.

Respuestas:


37

Puedes usar la siguiente declaración.

psql -v ON_ERROR_STOP=1 -f foobar.sql

Esto devolverá el código de retorno correcto, incluso el foobar.sqlarchivo no se habilita ON_ERROR_STOPen la parte superior del archivo.


21

Descubrí cómo resolver esto.

Necesito habilitar ON_ERROR_STOPen la parte superior del archivo.

Ejemplo:

\set ON_ERROR_STOP true

+1 por mirar la página de manual :)
serverhorror

+1 para la mejor solución porque me permite establecer la variable en el script, por lo que puedo confiar en que siempre se ejecuta correctamente y no tengo que preocuparme por el contexto de tiempo de ejecución.
Brandon
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.