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


34

Estou escrevendo um shell script que faz chamadas ao psql usando 2 formulários ... um é pelo comando (-c), o outro é pelo arquivo (-f).

por exemplo psql -c "cria a tabela foo (número inteiro da barra)"

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 parece retornar zero.

Gostaria de saber se existe uma solução alternativa para esse comportamento? (ou seja, retorne diferente de zero se ocorrer um erro ao executar um arquivo).

Obrigado.

Respostas:


37

Você pode usar a instrução abaixo.

psql -v ON_ERROR_STOP=1 -f foobar.sql

Isso retornará o código de retorno correto, mesmo que o foobar.sqlarquivo não seja ativado ON_ERROR_STOPna parte superior do arquivo.


21

Eu descobri como resolver isso.

Preciso ativar ON_ERROR_STOPna parte superior do arquivo.

Exemplo:

\set ON_ERROR_STOP true

+1 para olhar para a página do manual :)
serverhorror

+1 para a melhor solução, pois ela permite que eu defina a variável no script, para que eu possa confiar que ela sempre é executada corretamente e não precisa se preocupar com o contexto de tempo de execução.
Brandon
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.