#1 Tue 24 September 2019 11:48
Postgis : Code de retour d'une commande
Bonjour à toutes et tous,
Je travaille sur une base postgres en lançant des requêtes via un script shell qui ressemble à ceci :
Code:
#!/bin/bash # -*- mode:shell-script; coding:utf-8; -*- psql -h localhost -f maRequete.sql maBase user if [ $? -eq 0 ] ; then echo "Ça marche" | mailx -s "Fin du traitement " xxx@xxxx.fr else echo "Ça marche pas" | mailx -A /home/xxxx/nohup.out -s "ERROR : Fin du traitement : $1" xxx@xxxx.fr
Mon problème est le suivant : même en cas d'échec de la requéte, le code de retour de psql semble être 0, ce que j'ai vérifié manuellement (ici un ST_union qui plante):
Code:
~$ psql -h localhost -f maRequete.sql maBase user psql:landuse.sql:3: ERREUR: GEOSUnaryUnion: TopologyException: Input geom 1 is invalid: Ring Self-intersection at or near point 618237.49999999965 6897087.5 at 618237.49999999965 6897087.5 ~$ echo $? 0
Sauriez-vous comment connaître le véritable état de sortie de pgsql après une requête ? J'ai été voir ici, mais sans trouver mon bonheur.
Bref, je suis preneur de toute piste !
Bonne journée,
S.
Hors ligne
#2 Tue 24 September 2019 12:34
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1160
Re: Postgis : Code de retour d'une commande
Salut,
après un petit coup d'oeil au manuel de psql
Code:
man psql
Si votre script comporte plusieurs commandes distinctes,
psql les exécutera toutes mêmes si certaines échouent
et renverra toujours le code de retour 0,
sauf erreur fatale, genre division par zéro, auquel cas
psql s'arrête et le code de retour est 1.
Mais vous avez la possibilité de définir la variable psql ON_ERROR_STOP,
qui permet au script de s’arrêter à la première erreur rencontrée.
Quand cette variable est définie, le code de retour après exécution vaudra 3.
Code:
~$ psql --variable ON_ERROR_STOP=TRUE \ -h localhost -f maRequete.sql maBase user psql:landuse.sql:3: ERREUR: GEOSUnaryUnion: TopologyException: Input geom 1 is invalid: Ring Self-intersection at or near point 618237.49999999965 6897087.5 at 618237.49999999965 6897087.5 ~$ echo $? 3
Dernière modification par tumasgiu (Tue 24 September 2019 12:43)
Hors ligne