2011-04-30 4 views
8

J'essaye de reproduire une erreur de délai de connexion en réduisant temporairement le "wait_timeout" à 60 secondes au lieu des 28800 secondes par défaut.MySql 'wait_timeout' Variable globale vs variable

J'ai ajouté wait_timeout = 60 au fichier my.ini et j'ai redémarré MySql. Malheureusement, je ne suis toujours pas capable de reproduire la condition d'erreur (sauf si je veux attendre 28800 secondes). Les requêtes ci-dessous semblent indiquer que le paramètre "wait_timeout" est défini sur 60 au niveau de la variable globale mais toujours sur 28800 secondes pour la variable régulière (est-ce la même chose que la variable de session?).

Comment puis-je corriger cela? Comment le paramètre dans my.ini est-il écrasé?

Merci pour tout conseil car je suis encore un peu un administrateur MySQL. :)

Je cours MySQL 5.5.10 sous Windows XP.

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

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

Répondre

7

De la documentation MySQL: wait_timeout:

Au démarrage du fil, SESSION.WAIT_TIMEOUT wait_timeout est initialisé à partir de la valeur globale wait_timeout ou de la globale interactive_timeout valeur, selon la type de client (tel que défini par l'option de connexion CLIENT_INTERACTIVE à mysql_real_connect()). Voir aussi interactive_timeout

Vous devez également réduire la variable globale interactive_timeout dans votre fichier ini.

Notez également que:

Ce délai d'attente applique uniquement TCP/IP et les connexions socket Unix, pas les connexions effectuées à l'aide de canaux nommés, ou la mémoire partagée.

(Comme Vladislav a doit être ignoré la note ci-dessus, this bug has been fixed et le délai d'attente applique aux connexions avec les canaux nommés ou la mémoire partagée aussi bien, mais apparemment les documents n'ont pas été mis à jour.)

+2

Merci pour la réponse rapide. J'ai modifié la variable globale interactive_timeout dans le fichier my.ini qui a fait l'affaire – Justin

+0

Ce délai d'attente s'applique uniquement à TCP et les sockets de domaine Unix sont des informations obsolètes, bug dans la documentation. Cela a été corrigé en 2009 (http://bugs.mysql.com/bug.php?id=31621) –

+0

@Vladislav: thnx, je ne savais pas cela. –