Comme noté par Riedsio, les variables de session ne changent pas après la connexion sauf si vous les avez définies spécifiquement; la définition de la variable globale modifie uniquement la valeur de session de votre prochaine connexion. Par exemple, si vous avez 100 connexions et que vous abaissez le wait_timeout
global alors cela n'affectera pas les connexions existantes, seulement les nouvelles après que la variable a été changée. Pour la variable wait_timeout
, cependant, il y a une torsion. Si vous utilisez le client mysql
en mode interactif ou le connecteur avec CLIENT_INTERACTIVE
réglé par mysql_real_connect()
alors vous verrez l'ensemble interactive_timeout
pour @@session.wait_timeout
Ici vous pouvez voir cette démonstration:
> ./bin/mysql -Bsse 'select @@session.wait_timeout, @@session.interactive_timeout, @@global.wait_timeout, @@global.interactive_timeout'
70 60 70 60
> ./bin/mysql -Bsse 'select @@wait_timeout'
70
> ./bin/mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 5.7.12-5 MySQL Community Server (GPL)
Copyright (c) 2009-2016 Percona LLC and/or its affiliates
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select @@wait_timeout;
+----------------+
| @@wait_timeout |
+----------------+
| 60 |
+----------------+
1 row in set (0.00 sec)
Ainsi, si vous testez ceci en utilisant le client c'est le interactive_timeout
que vous verrez lors de la connexion et non pas la valeur de wait_timeout
Votre réponse contredit directement l'OP et vous n'abordez pas la contradiction. – klaar