web-dev-qa-db-fra.com

Vérifier le statut de retour de la commande psql dans les scripts unix du shell

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.

17
Naveen Reddy CH

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
30
Daniel Vérité

Comme mentionné ici , vous pouvez également ajouter cette ligne en haut de votre fichier/script SQL:

\set ON_ERROR_STOP true
0
Marco Roy