J'utilise la commande psql pour me connecter et émettre une requête sur la base de données postgreSQL. Quelqu'un peut-il me dire comment vérifier le statut de retour de la requête exécutée dans un script Shell?.
J'ai utilisé la commande echo $?
pour vérifier l'état mais elle renvoie toujours zéro.
Merci pour l'aide.
psql
code de retour est documenté sous la forme :
STATUS DE SORTIE
psql renvoie 0 au shell s'il s'est terminé normalement, 1 en cas d'erreur fatale se produit (par exemple, manque de mémoire, fichier non trouvé), 2 si le fichier la connexion au serveur a mal tourné et la session n'était pas interactive, et 3 si une erreur est survenue dans un script et la variable ON_ERROR_STOP a été mis en.
Vous voulez probablement juste utiliser ON_ERROR_STOP.
Échec du test et de la notification au shell:
$ psql -d test -v "ON_ERROR_STOP=1" <<EOF
select error;
select 'OK';
EOF
ERROR: column "error" does not exist
LINE 1: select error;
$ echo $?
3
Impossible d'être ignoré et non signalé au shell:
$ psql -d test <<EOF
select error;
select 'OK';
EOF
ERROR: column "error" does not exist
LINE 1: select error;
^
?column?
----------
OK
(1 row)
$ echo $?
0
Comme mentionné ici , vous pouvez également ajouter cette ligne en haut de votre fichier/script SQL:
\set ON_ERROR_STOP true