postgres 9.6 Debian GNU / Linux 9
se usa siguiendo un script bash simple que se llama desde el crontab de un usuario, myid es un parámetro pasado:
#!/bin/bash
...
PGPASSFILE="/home/user/.pgpass"
PGCONNECT=" psql -U myuser -w -h 000.000.000.000 -d mydatabase -p 5432"
PGCOMMAND1="SELECT something, somemmore FROM schema.table WHERE id= ${myid}"
PGRESULT=`$PGCONNECT -A -F ";" -t -c "$PGCOMMAND1"`
RETCODE1=$?
...
PGCOMMAND2="SELECT schema.functionname(${myid});"
PGRESULT=`$PGCONNECT -A -F ";" -t -c "$PGCOMMAND2"`
RETCODE2=$?
if [ $RETCODE1 -eq 0 ] && [ $RETCODE2 -eq 0 ]; then
mailx -s sendme_asuccessemail
else
echo -e "ret1: $RETCODE1\n" >> $MAIL_FILE
echo -e "ret2: $RETCODE2\n" >> $MAIL_FILE
mailx -s sendme_errormailwith retcode1=2
fi
y la mayoría de las veces todo está bien (el script se ejecuta 60 veces al día en diferentes momentos). una vez por semana o menos recibo un mensaje de error con el estado de salida de psql 2 en RETCODE1 como resultado de la selección.
de la página del manual:
2 if the connection to the server went bad and the session was not
interactive
puede suceder, este script se llama por usercrontab, que se ejecuta dos veces o más al mismo tiempo con myid diferente. Siempre se llama al segundo comando, que hace el trabajo real.
¿Cómo puedo reducir el error? ¿Qué significa realmente el error? ¿Puedo ignorarlo?