2011-11-24 11 views
5

Estoy tratando de hacer frente al error MySQL server has gone away de MySQL en un entorno django.Obtener intencionalmente un error "servidor MySQL se ha ido"

La solución rápida fue establecer el valor wait_timeout MySQL variable global a un valor enorme, pero a la larga esto se acumularía en muchas conexiones abiertas.

Pensé que obtendría la variable wait_timeout y sondearía el servidor en intervalos más pequeños. Después de implementar esto, traté de probarlo pero no puedo obtener el error.

I set global wait_timeout=15 e incluso set global interactive_timeout=15 pero la conexión se niega a desaparecer. Estoy seguro de que estoy sondeando la base de datos en intervalos mayores de 15 segundos.

¿Cuál podría ser la causa de no poder volver a crear este error?

+2

+1 por querer probar las condiciones de error. – vidstige

Respuesta

4

Ejecuta el script sucio y rápido y prueba tu proyecto django o lo que sea. Creo que este no es un enfoque elegante, pero funciona bien.

<?php 
mysql_connect("127.0.0.1", "id", "pw"); // should be changed to yours 
while(1) 
{ 
    $r = mysql_query("SHOW PROCESSLIST"); 
    while($d = mysql_fetch_row($r)) 
    { 
     if($d[7] != "SHOW PROCESSLIST") 
     { 
      mysql_query("KILL ". $d[0]); 
      echo($d[0]." was killed.\n"); 
     } 
    } 
} 
?> 

Y aquí está el resultado.

mysql> select * from foo; 
ERROR 2006 (HY000): MySQL server has gone away 
No connection. Trying to reconnect... 
Connection id: 337 
Current database: test 

ERROR 2006 (HY000): MySQL server has gone away 
No connection. Trying to reconnect... 
Connection id: 338 
Current database: test 

ERROR 2006 (HY000): MySQL server has gone away 
mysql> 
Cuestiones relacionadas