Postgres: código de saída diferente de zero ao executar um arquivo sql?

31

Estou escrevendo um script de shell que faz chamadas para o psql usando 2 forms ... uma é pelo comando (-c), a outra é pelo arquivo (-f).

por exemplo. psql -c "cria tabela foo (barra inteira)"

psql -f foobar.sql

Uma diferença entre esses formulários é que uma chamada por comando (-c) retorna um código de saída diferente de zero se um erro for encontrado, enquanto uma chamada por arquivo (-f) sempre retornará zero.

Eu estou querendo saber se há uma solução alternativa para esse comportamento? (isto é, retorna um valor diferente de zero se ocorrer um erro durante a execução de um arquivo).

Obrigado.

    
por Jin Kim 09.06.2009 / 20:39

2 respostas

19

Descobri como resolver isso.

Eu preciso ativar ON_ERROR_STOP no topo do arquivo.

Exemplo:

\set ON_ERROR_STOP true
    
por 09.06.2009 / 20:51
35

Você pode usar a declaração abaixo.

psql -v ON_ERROR_STOP=1 -f foobar.sql

Isso retornará o código de retorno correto mesmo foobar.sql arquivo não habilita ON_ERROR_STOP no topo do arquivo.

    
por 10.06.2011 / 11:11