Vous n'êtes pas identifié(e).

#1 28/05/2018 11:16:53

Indaa
Membre

Petites questions sur psql -c

Bonjour,

J'aurai une petite question concernant la commande psql -c :

Voici un script utilisé sur ma machine locale version 9.6 :
for row in $schema_table; do
  psql -At $database -c "set statement_timeout = 20000;" -c "ANALYZE $row; -- anal_all_tables.sh cron" || true
done

Résultat :
SET
ANALYZE
SET
ANALYZE
SET
ANALYZE
.......


Et ce même script sur une machine "prod" version 9.5 renvoie :

ANALYZE
ANALYZE
ANALYZE
ANALYZE
ANALYZE
.....

Donc sur ma machine local (9.6) le set statement_timeout = 20000 est bien prit en compte ,
alors que sur la machine "prod" il n'est pas prit en compte.

J'aimerai comprendre le cause de se problème , est ce que la version postgresql joue un role ? ou bien est un changement de conf qui influe psql sur la machine prod !

Merci !!!!

Hors ligne

#2 28/05/2018 11:28:54

gleu
Administrateur

Re : Petites questions sur psql -c

D'après https://docs.postgresql.fr/9.6/release-9-6.html : "Support multiple -c and -f command-line options"

Autrement dit, plusieurs options -c ne sont pas supportées dans les versions antérieures à la 9.6. Dans les faits, seule la dernière opération est réalisée (donc ici, pas le SET, mais l'ANALYZE). Le mieux est de le mettre dans un fichier SQL et de l'exécuter avec l'option -f.


Guillaume.

Hors ligne

#3 28/05/2018 11:29:59

gleu
Administrateur

Re : Petites questions sur psql -c

J'allais oublier. C'est la version de psql qui pose problème, pas celle de PostgreSQL. Donc il suffit d'utiliser un psql 9.6 (certainement plus simple que ma solution précédente).


Guillaume.

Hors ligne

#4 28/05/2018 11:57:35

Indaa
Membre

Re : Petites questions sur psql -c

Parfait !

Merci Guillaume .

Hors ligne

Pied de page des forums