2011-04-30 30 views
8

Estoy tratando de reproducir un error de tiempo de espera de conexión reduciendo temporalmente el "wait_timeout" a 60 segundos en lugar de los 28800 segundos predeterminados.MySql 'wait_timeout' Variable global vs Variable

Agregué wait_timeout = 60 al archivo my.ini y reinicié MySql. Lamentablemente, todavía no puedo reproducir la condición de error (a menos que desee esperar 28800 segundos).

Las consultas siguientes parecen indicar que "wait_timeout" está establecido en 60 en el nivel de variable global, pero aún se establece en 28800 segundos para la variable regular (¿es eso lo mismo que la variable de sesión?).

¿Cómo puedo corregir esto? ¿Cómo se sobrescribe la configuración en my.ini?

Gracias por cualquier consejo, ya que todavía soy un poco noob administrador de MySQL. :)

Estoy ejecutando MySql 5.5.10 en 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) 

Respuesta

7

De la documentación de MySQL: wait_timeout:

En el inicio del hilo, el valor wait_timeout sesión se inicia a partir del valor mundial wait_timeout o desde el valor global de interactive_timeout, dependiendo de la tipo de cliente (según lo definido por la opción de conexión CLIENT_INTERACTIVE al mysql_real_connect()). Ver también interactive_timeout.

También debe bajar la variable global interactive_timeout en su archivo ini.

También tenga en cuenta que:

Este tiempo de espera se aplica únicamente a TCP/IP y conexiones socket Unix, no a las conexiones realizadas mediante canalizaciones con nombre, o memoria compartida.

(Como se señaló Vladislav la nota anterior debe tenerse en cuenta, como this bug has been fixed y el tiempo de espera se aplica a las conexiones con tuberías con nombre o memoria compartida también, pero al parecer los documentos no se han actualizado.)

+2

Gracias por la rápida respuesta. Modifiqué la variable global interactive_timeout en el archivo my.ini que hizo el truco – Justin

+0

Ese tiempo de espera solo se aplica a los sockets de dominio TCP y Unix, la información está desactualizada, error en la documentación. Esto fue reparado en 2009 (http://bugs.mysql.com/bug.php?id=31621) –

+0

@Vladislav: en verdad, no lo sabía. –