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


34

J'écris un script shell qui appelle la base de données psql sous 2 formes ... l'une par commande (-c), l'autre par fichier (-f).

Par exemple, psql -c "crée une table foo (barre entière)"

psql -f foobar.sql

Une différence entre ces formes est qu'un appel par commande (-c) renvoie un code de sortie différent de zéro si une erreur est rencontrée, alors qu'un appel par fichier (-f) semble toujours renvoyer zéro.

Je me demande s'il existe une solution de contournement pour ce comportement? (ie renvoyer non nul si une erreur survient lors de l'exécution d'un fichier).

Merci.

Réponses:


37

Vous pouvez utiliser la déclaration ci-dessous.

psql -v ON_ERROR_STOP=1 -f foobar.sql

Cela renverra le code de retour correct, même si le foobar.sqlfichier n'est pas activé ON_ERROR_STOPen haut du fichier.


21

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

J'ai besoin d'activer ON_ERROR_STOPen haut du fichier.

Exemple:

\set ON_ERROR_STOP true

+1 pour avoir regardé la page de
manuel

+1 pour la meilleure solution car elle me permet de définir la variable dans le script, afin que je puisse avoir confiance qu'elle fonctionne toujours correctement et que vous n'avez pas à vous soucier du contexte d'exécution.
Brandon
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.