Este error me ha hecho doler la cabeza durante un buen tiempo, aunque no es crítico ya uqe muchas veces se resuleve actualizando la página o recargándola, genera problemas y hace que nuestro sitio no vaya fino como quisiéramos. Es un problema que afecta a varios programas en PHP como Worpdress y vBulletin, aunque seguro no se limita a estos.
Bueno, el mensaje que devuelve el servidor es “MySQL server has gone away“. Un menaje alternativo es “Lost connection to server during query“. Hay varias causas que lo originan, ahora las veremos para saber cómo arreglarlo.
Las causas más comúnes son:
1. El tiempo de espera del servidor se ha agotado y la conexión se ha cerrado. Por defecto, el servidor cierra la conexión después de 8 horas o 28800 segundos si no pasa nada. Este tiempo límite se cambia modificando la configuración de la variable wait_timeout cuando iniciamos mysqld con el comando /etc/my.cnf (en Linux; en Windows debemos buscar el directorio de instalación). Esto afecta mas que todo a las conexiones persistentes (conexiones abiertas usando mysql_pconnect() in PHP). También puede afectar otro tipo de conexiones de tipo “pooled”.
2. Otra razón bastante comun para recibir este error es porque se ha llamado al comando “close” en la conexión MySQL y luego se ha intentado ejecutar una consulta (query) con la misma conexión cerrada. Este ya es un problema de simple lógica. Se nota, no?
Para ver el tiempo de ejecución del servidor MySQL (uptime), podemos usar el siguiente comando:
mysqladmin -u root -p version
3. Tambien puede ser debido a tiempo de espera en la conexión TCP/IP del lado del cliente (en español: tu conexión podía haber colpasado). Esto pasa por usar los comandos: mysql_options(…, MYSQL_OPT_READ_TIMEOUT,…) ó mysql_options(…, MYSQL_OPT_WRITE_TIMEOUT,…). En ese caso, debemos incrementar la varialbe de timeout, mencionada antes, para resolver el problema.
4. Nos hemos topado con un tiempo de espera muy alto en el servidor y la reconexión automática en el cliente está deshabilitada.
5. Estos errores también pasan cuando enviamos una consulta incorrecta al servidor o cuando esta es muy larga (este fue mi problema) o fuera de lugar, el servidor asume que algo ha ido mal y cierra la conexión. Si necesitamos usar consultas “grandes” (como cuando trabajamos con columnas BLOB), podemos incrementar el tamaño límite de consulta ajustando la variable max_allowed_packet variable, que tiene un valor por defecto de 1MB. También se puede probar a aumentar el tamaño máximo de maximum packet size.
6. Si una sentencia INSERT o REPLACE que inserta muchas líneas también puede causar estos errores. Ya sea que una de las sentencias necesite una solicitud sencilla o el número de líneas es demasiado; esto puede resolverse fácilmente ajustando el número de lineas a modificar o insertar por cada sentencia INSERT o REPLACE.
7. Otra razón para tener el mensaje de conexión perdida en MySQL puede ser porque enviamos un paquete de 16MB o más grande y si nuestro cliente es anterior a la versión 4.0.8 y els ervidor es superior a 4.0.8 o viceversa.
También puede darse otros casos más raros, pero estos son los más comunes.
Toma tiempo y esfuerzo identificar y resolver estos problemas. Con experiencia al respecto puedo decirles que no encontraremos el error a la primera. En base a lo que expongo aquí, sería un error asumir que el error viene provocado por lo “más lógico”, no siempre es así. En mi caso, no le atiné a la primera, pero al final pude resolverlo.
Si no entiendes nada de lo que digo o no tienes idea de cómo solucionarlo, pásale este enlace a tu administrador de hosting para que lo resuelva por tí, si corresponde.
Palabras Clave:
- error 2206
- arreglar error 2206 pc
- tiempo de espera de conexión mysqli PHP
- resolver problema mysql server has gone away
- mysql tiempo ejecucion consulta aumentar
- mysql server has gone away solucionar problema php
- mysql server gone away ejecutar view
- error 2206 pagina web
- 2206 mysql error
- conexiones persistentes mysql has gone away










{ 7 comments… read them below or add one }
Problema terrible. Tengo un sistema de envios de boletines donde hay mas de 50.000 emails, y programo tareas de envios sin que se repita y me sale este problema. Aun no lo resuelvo pero gracias por aclarar mas el panorama del error
Pasa a menudo, de hecho no hay receta mágica, porque siempre depende de la capacidad de donde estés hospedado.
Es jugar un poco con las variables, un saludo y espero te haya servido de algo.
Substantially, the article is in reality the best topic on this related issue. I agree with your conclusions and will eagerly look forward to your future updates. Just saying thanks will not just be enough, for the phenomenal lucidity in your writing. I will directly grab your rss feed to stay abreast of any updates.
Thanks for making the effort to make clear the terminlogy to the beginners!
Hi I found this site by mistake when i was searching yahoo for this
I just couldnt leave your website prior to saying that I actually liked the high quality information you offer for your visitors. Will be back frequently to check up on new information in you article!
excellent article,however i have some trouble in understanding the last paragraph, can you please describe a little bit indepth?