Error de MySQL 2006: el servidor de mysql se ha ido

Estoy ejecutando un servidor en mi oficina para procesar algunos archivos y reportar los resultados a un servidor MySQL remoto.

El procesamiento de los archivos lleva algo de tiempo y el proceso muere a la mitad con el siguiente error:

2006, MySQL server has gone away 

He oído hablar de la configuración de MySQL, wait_timeout , pero ¿necesito cambiar eso en el servidor de mi oficina o en el servidor MySQL remoto?

Puede ser más fácil verificar si la conexión y restablecerla si es necesario.

Ver PHP: mysqli_ping para obtener información sobre eso.

Me he encontrado con esto varias veces y normalmente he encontrado que la respuesta es una configuración predeterminada muy baja de max_allowed_packet . /etc/my.cnf en /etc/my.cnf (bajo [mysqld] ) a 8 o 16M generalmente lo arregla.

 [mysqld] max_allowed_packet=16M 

Nota: Esto se puede configurar en su servidor mientras se está ejecutando.

Use set global max_allowed_packet=104857600 . Esto lo establece en 100MB.

Tuve el mismo problema, pero cambiar max_allowed_packet en el archivo my.ini/my.cnf en [mysqld] hizo el truco.

agregar una linea

max_allowed_packet = 500M

ahora restart the MySQL service una vez que haya terminado.

Utilicé el siguiente comando en la línea de comandos de MySQL para restaurar una base de datos MySQL cuyo tamaño supera los 7 GB y funciona.

 set global max_allowed_packet=268435456; 

En MAMP (versión no profesional) agregué

 --max_allowed_packet=268435456 

a ...\MAMP\bin\startMysql.sh

Créditos y más detalles aquí

Error: 2006 ( CR_SERVER_GONE_ERROR )

Mensaje: el servidor MySQL se ha ido

En general, puede volver a intentar la conexión y luego hacer la consulta nuevamente para resolver este problema, intente como 3-4 veces antes de darse por vencido por completo.

Asumiré que estás usando PDO. De ser así, vería la excepción PDO, incrementaría un contador y luego volvería a intentarlo si el contador está por debajo de un umbral.

Si tiene una consulta que está causando un tiempo de espera, puede establecer esta variable ejecutando:

 SET @@GLOBAL.wait_timeout=300; SET @@LOCAL.wait_timeout=300; -- OR current session only 

Donde 300 es el número de segundos que cree que es el tiempo máximo que puede tomar la consulta.

Más información sobre cómo lidiar con los problemas de conexión de Mysql.

EDITAR: Otras dos configuraciones que también querrás utilizar son net_write_timeout y net_read_timeout .

Este error se produce debido a la expiración de wait_timeout.

Simplemente vaya al servidor mysql y compruebe su wait_timeout:

mysql> MOSTRAR VARIABLES COMO ‘wait_timeout’

mysql> set global wait_timeout = 600 # 10 minutos o tiempo máximo de espera que necesita

http://sggoyal.blogspot.in/2015/01/2006-mysql-server-has-gone-away.html

Estaba obteniendo el mismo error en mi servidor Ubuntu de DigitalOcean.

Traté de cambiar los valores de max_allowed_packet y wait_timeout, pero ninguno de ellos lo solucionó.

Resulta que mi servidor se quedó sin RAM. Agregué un archivo swap de 1GB y eso solucionó mi problema.

Revisa tu memoria con free -h para ver si eso es lo que está causando.

En Windows, los chicos que usan xampp deben usar esta ruta xampp / mysql / bin / my.ini y cambiar max_allowed_packet (en la sección [mysqld]) a su tamaño de elección. p.ej

 max_allowed_packet=8M 

De nuevo en php.ini (xampp / php / php.ini) cambie upload_max_filesize el tamaño de elección. p.ej

 upload_max_filesize=8M 

Me dio un dolor de cabeza por algún tiempo hasta que descubrí esto. Espero eso ayude.

Para Vagrant Box, asegúrese de asignar suficiente memoria a la caja

 config.vm.provider "virtualbox" do |vb| vb.memory = "4096" end 

En mi caso, era un valor bajo de la variable open_files_limit , que bloqueaba el acceso de mysqld a los archivos de datos.

Lo revisé con:

 mysql> SHOW VARIABLES LIKE 'open%'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | open_files_limit | 1185 | +------------------+-------+ 1 row in set (0.00 sec) 

Después de cambiar la variable a gran valor, nuestro servidor estaba vivo de nuevo:

 [mysqld] open_files_limit = 100000 

Fue un problema de RAM para mí.

Estaba teniendo el mismo problema incluso en un servidor con 12 núcleos de CPU y 32 GB de RAM. Investigué más e intenté liberar RAM. Aquí está el comando que utilicé en Ubuntu 14.04 para liberar RAM:

 sync && echo 3 | sudo tee /proc/sys/vm/drop_caches 

Y, arregló todo. Lo he configurado en cron para que se ejecute cada hora.

 crontab -e 0 * * * * bash /root/ram.sh; 

Y puede usar este comando para verificar la cantidad de RAM disponible disponible:

 free -h 

Y obtendrás algo como esto:

  total used free shared buffers cached Mem: 31G 12G 18G 59M 1.9G 973M -/+ buffers/cache: 9.9G 21G Swap: 8.0G 368M 7.6G 

El escenario poco probable es que tenga un firewall entre el cliente y el servidor que fuerce el restablecimiento de TCP en la conexión.

Tuve ese problema y descubrí que nuestro firewall corporativo F5 estaba configurado para terminar sesiones inactivas que están inactivas durante más de 5 minutos.

Una vez más, este es el escenario poco probable.

Si está utilizando 64Bit WAMPSERVER, busque múltiples apariciones de max_allowed_packet porque WAMP usa el valor establecido en [wampmysqld64] y no el valor establecido en [mysqldump], que para mí era el problema, estaba actualizando el incorrecto. Establezca esto como algo como max_allowed_packet = 64M.

Esperemos que esto ayude a otros usuarios de Wampserver.

elimine el comentario de la línea siguiente en su my.ini/my.cnf , esto dividirá su archivo grande en una porción más pequeña

 # binary logging format - mixed recommended # binlog_format=mixed 

A

 # binary logging format - mixed recommended binlog_format=mixed 

Encontré la solución para “# 2006 – el servidor MySQL se ha ido” este error. La solución es solo que tienes que verificar dos archivos

  1. config.inc.php
  2. config.sample.inc.php

La ruta de estos archivos en Windows es

 C:\wamp64\apps\phpmyadmin4.6.4 

En estos dos archivos, el valor de esto:

 $cfg['Servers'][$i]['host']must be 'localhost' . 

En mi caso fue:

 $cfg['Servers'][$i]['host'] = '127.0.0.1'; 

cambiarlo a:

 "$cfg['Servers'][$i]['host']" = 'localhost'; 

Asegúrate en ambos:

  1. config.inc.php
  2. config.sample.inc.php archivos debe ser ‘localhost’.

Y último conjunto:

 $cfg['Servers'][$i]['AllowNoPassword'] = true; 

Luego reinicie Wampserver.


Para cambiar el nombre de usuario y la contraseña de phpmyadmin

Puede cambiar directamente el nombre de usuario y la contraseña de phpmyadmin a través del archivo config.inc.php

Estas dos líneas

 $cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i]['password'] = ''; 

Aquí puede dar un nuevo nombre de usuario y contraseña. Después de los cambios guarde el archivo y reinicie el servidor WAMP.

Esto generalmente indica problemas de conectividad o tiempos de espera del servidor MySQL . En general, se puede resolver cambiando wait_timeout y max_allowed_packet en my.cnf o similar.

Sugeriría estos valores:

wait_timeout = 28800

max_allowed_packet = 8M

Recibí el mensaje Error 2006 en diferentes software de clientes MySQL en mi escritorio Ubuntu. Resultó que mi versión del controlador JDBC era demasiado antigua.

Esto podría ser un problema de su tamaño de archivo .sql.

Si está usando xampp. Vaya al panel de control de xampp -> Haga clic en Configuración de MySQL -> Abra my.ini.

Aumenta el tamaño del paquete.

 max_allowed_packet = 2M -> 10M 

Para los usuarios que usan XAMPP, hay 2 parámetros max_allowed_packet en C: \ xampp \ mysql \ bin \ my.ini.

Siempre es una buena idea verificar los registros del servidor Mysql, por la razón por la cual desapareció.

Te lo dirá.

Si sabe que se va a desconectar por un tiempo, puede cerrar su conexión, hacer su procesamiento, reconectar y escribir sus informes.