web-dev-qa-db-fra.com

Pourquoi je n'ai pas pu modifier la variable variable long_query_time lors de l'exécution

J'utilise MySQL version 5.1.66. J'ai vu que la variable long_query_time est dynamique, mais quand j'ai essayé

set GLOBAL long_query_time=1; 

Après l'opération ci-dessus, j'ai essayé à nouveau

mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)

Depuis la console mysql, il ne se modifie pas, pourquoi?

27
neotam

Vous définissez une variable système GLOBAL, mais vous recherchez la variable SESSION. Pour que le paramètre de variable GLOBAL prenne effet pour la session en cours, vous devez vous reconnecter ou définir la variable @@ SESSION.long_query_time. (Notez que SHOW VARIABLES affiche par défaut les variables de session.)

Voici un exemple:

mysql> SHOW SESSION VARIABLES LIKE "long_query_time";
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+

mysql> SET @@GLOBAL.long_query_time = 1;

mysql> SHOW GLOBAL VARIABLES LIKE "long_query_time";
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 1.000000 |
+-----------------+----------+

mysql> SHOW VARIABLES LIKE "long_query_time";
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
54
geertjanvdk

La modification d'une valeur de variable système dans mysql (cfr. http://dev.mysql.com/doc/refman/5.1/en/set-statement.html ) ne modifie pas la valeur pour les clients déjà connectés à une session.

La modification durera jusqu'au redémarrage du serveur, les modifications ultérieures ou l'expiration de la session.

veuillez vous référer http://bugs.mysql.com/bug.php?id=38704 pour plus de détails

3
shola