web-dev-qa-db-fra.com

Postgres: code de sortie non nul lors de l'exécution d'un fichier SQL?

J'écris un script shell qui appelle des appels vers psql à l'aide de 2 formulaires ... une est par commande (-c), l'autre est par fichier (-f).

par exemple. PSQL -C "Créer une table FOO (Bar Entier)"

psql -f foobar.sql

Une différence entre ces formulaires est qu'un appel par commande (-C) renvoie un code de sortie non nul Si une erreur est rencontrée, tandis qu'un appel par fichier (-f) semble toujours renvoyer zéro.

Je me demande s'il y a une solution de contournement pour ce comportement? (c'est-à-dire renvoyer non-zéro si une erreur se produit lors de l'exécution d'un fichier).

Merci.

34
Jin Kim

J'ai découvert comment résoudre ce problème.

J'ai besoin d'activer ON_ERROR_STOP En haut du fichier.

Exemple:

\set ON_ERROR_STOP true
21
Jin Kim

Vous pouvez utiliser la déclaration ci-dessous.

psql -v ON_ERROR_STOP=1 -f foobar.sql

Cela rendra le code de retour correct même foobar.sql fichier n'active pas ON_ERROR_STOP En haut du fichier.

37
Taye