Vous n'êtes pas identifié(e).
Pages : 1
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
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
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
Parfait !
Merci Guillaume .
Hors ligne
Pages : 1