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.
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
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.