Estoy ejecutando un servidor en mi oficina para procesar algunos archivos e informar los resultados a un servidor MySQL remoto.
El procesamiento de los archivos lleva algún tiempo y el proceso se detiene a la mitad con el siguiente error:
2006, MySQL server has gone away
He oído sobre la configuración de MySQL, wait_timeout , pero ¿necesito cambiar eso en el servidor de mi oficina o en el servidor remoto de MySQL?
mysql
mysql-error-2006
flotador izquierdo
fuente
fuente
max_allowed_packet
tamaño o lawait_timeout
cantidad no lo soluciona, verifique el uso de su memoria. Recibía el mismo error y mi servidor se estaba quedando sin memoria. Agregué un archivo de intercambio de 1GB y eso lo solucionó.Respuestas:
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.
fuente
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
.Elevarlo
/etc/my.cnf
(debajo[mysqld]
) a 8 o 16M generalmente lo arregla. (El valor predeterminado en MySql 5.7 es4194304
, que es de 4 MB).Nota: Simplemente cree la línea si no existe
Nota: Esto se puede configurar en su servidor mientras se ejecuta.
Uso
set global max_allowed_packet=104857600
. Esto lo establece en 100 MB.fuente
mysql.server stop
,mysql.server start
(Oct 2018, MySQL v5.7, MacOS)Tuve el mismo problema, pero cambiar
max_allowed_packet
elmy.ini/my.cnf
archivo debajo[mysqld]
hizo el truco.agregar una línea
ahora
restart the MySQL service
una vez que hayas terminado.fuente
Utilicé el siguiente comando en la línea de comandos de MySQL para restaurar una base de datos MySQL de más de 7 GB, y funciona.
fuente
show variables like 'max_allowed_packet';
Error: 2006 ( CR_SERVER_GONE_ERROR )
En general, puede volver a intentar la conexión y luego volver a realizar la consulta para resolver este problema; intente de 3 a 4 veces antes de darse por vencido por completo.
Supongo que estás usando PDO. Si es así, detectaría la Excepción PDO, incremente un contador e intente nuevamente 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:
Donde 300 es el número de segundos que crees que es el tiempo máximo que la consulta podría tomar.
Más información sobre cómo lidiar con los problemas de conexión de Mysql.
EDITAR: otras dos configuraciones que quizás desee usar también son
net_write_timeout
ynet_read_timeout
.fuente
En MAMP (versión no profesional) agregué
a
...\MAMP\bin\startMysql.sh
Créditos y más detalles aquí
fuente
Este error se produce debido a la caducidad de wait_timeout.
Simplemente vaya al servidor mysql, verifique wait_timeout:
http://sggoyal.blogspot.in/2015/01/2006-mysql-server-has-gone-away.html
fuente
Hay varias causas para este error.
MySQL / MariaDB relacionados:
wait_timeout
- Tiempo en segundos que el servidor espera a que se active una conexión antes de cerrarla.interactive_timeout
- Tiempo en segundos que el servidor espera una conexión interactiva.max_allowed_packet
- Tamaño máximo en bytes de un paquete o una cadena generada / intermedia. Establecido como el BLOB más grande, en múltiplos de 1024.Ejemplo de my.cnf :
Servidor relacionado:
free -h
Marco relacionado:
CONN_MAX_AGE
(ver documentos )Cómo depurarlo:
SHOW VARIABLES LIKE '%time%';
mysqladmin variables
log_warnings = 4
log_error_verbosity = 3
fuente
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]) al tamaño de su elección. p.ej
Nuevamente en php.ini (xampp / php / php.ini) cambie upload_max_filesize el tamaño de elección. p.ej
Me dio dolor de cabeza por algún tiempo hasta que descubrí esto. Espero eso ayude.
fuente
upload_max_filesize
variable. Siempre es desconocido en mi mysqlRecibía el mismo error en mi servidor Ubuntu DigitalOcean.
Intenté cambiar la configuración max_allowed_packet y wait_timeout pero ninguno de ellos lo solucionó.
Resulta que mi servidor estaba sin RAM. He añadido un archivo de intercambio de 1 GB y que fijo mi problema.
Verifique su memoria
free -h
para ver si eso es lo que la está causando.fuente
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:
Y lo arregló todo. Lo configuré en cron para que se ejecute cada hora.
Y puede usar este comando para verificar la cantidad de RAM disponible:
Y obtendrás algo como esto:
fuente
En mi caso fue bajo valor de
open_files_limit
variable, lo que bloqueó el acceso de mysqld a los archivos de datos.Lo comprobé con:
Después de cambiar la variable a gran valor, nuestro servidor estaba vivo nuevamente:
fuente
Si está utilizando el WAMPSERVER de 64 bits, busque múltiples ocurrencias 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 en algo como max_allowed_packet = 64M.
Esperemos que esto ayude a otros usuarios de Wampserver.
fuente
Esto generalmente indica problemas de conectividad del servidor MySQL o tiempos de espera. Generalmente 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
fuente
Para Vagrant Box, asegúrese de asignar suficiente memoria a la caja
fuente
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 finalizar sesiones inactivas que están inactivas durante más de 5 minutos.
Una vez más, este es el escenario poco probable.
fuente
Siempre es una buena idea verificar los registros del servidor Mysql, por la razón por la que desapareció.
Te lo dirá.
fuente
Si está utilizando el servidor xampp:
Vaya a xampp -> mysql -> bin -> my.ini
Cambiar debajo del parámetro:
max_allowed_packet = 500M
innodb_log_file_size = 128M
Esto me ayudó mucho :)
fuente
descomenta la línea de abajo en tu
my.ini/my.cnf
, esto dividirá tu archivo grande en una porción más pequeñaA
fuente
Encontré la solución a "# 2006 - El servidor MySQL se ha ido" este error. La solución es solo tienes que verificar dos archivos
La ruta de estos archivos en Windows es
En estos dos archivos el valor de esto:
En mi caso fue:
cámbielo a:
Asegúrate en ambos:
Y último set:
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 lineas
Aquí puede dar un nuevo nombre de usuario y contraseña. Después de los cambios, guarde el archivo y reinicie el servidor WAMP.
fuente
Recibí el mensaje de error 2006 en diferentes software de clientes MySQL en mi escritorio Ubuntu. Resultó que mi versión del controlador JDBC era demasiado antigua.
fuente
Esto podría ser un problema de su tamaño de archivo .sql.
Si está utilizando xampp. Vaya al panel de control de xampp -> Haga clic en Configuración de MySql -> Abrir my.ini.
Aumenta el tamaño del paquete.
fuente
Hay una manera más fácil si está utilizando XAMPP. Abra el panel de control de XAMPP y haga clic en el botón de configuración en la sección mysql.
Ahora haga clic en my.ini y se abrirá en el editor. Actualice max_allowed_packet a su tamaño requerido.
Luego reinicie el servicio mysql. Haga clic en detener en el servicio Mysql, haga clic en comenzar nuevamente. Espera unos minutos.
Luego intente ejecutar su consulta Mysql nuevamente. Espero que funcione.
fuente
MAMP 5.3, no encontrará my.cnf y agregarlos no funciona, ya que max_allowed_packet se almacena en variables.
Una solución puede ser:
Ejecute la siguiente consulta, establece max_allowed_packet en 7gb:
establecer global max_allowed_packet = 268435456;
Para algunos, es posible que también necesite aumentar los siguientes valores:
fuente
Para los usuarios que usan XAMPP, hay 2 parámetros max_allowed_packet en C: \ xampp \ mysql \ bin \ my.ini.
fuente
Este error ocurre básicamente por dos razones.
Puedes probar este código a continuación.
Mitiga el error sea cual sea el motivo, especialmente por el segundo motivo.
Si es causado por poca RAM, debe aumentar la eficiencia de conexión de la base de datos desde el código, desde la configuración de la base de datos, o simplemente aumentar la RAM.
fuente
Por si esto ayuda a alguien:
Recibí este error cuando abrí y cerré conexiones en una función que se llamaría desde varias partes de la aplicación. Tenemos demasiadas conexiones, por lo que pensamos que sería una buena idea reutilizar la conexión existente o descartarla y hacer una nueva como esta:
self :: $ instance-> query ('KILL CONNECTION_ID ()'); self :: $ instancia = nulo; return self :: newConnection ($ base de datos, $ host, $ usuario, $ contraseña); } return self :: $ instancia; } Bueno, resulta que hemos sido demasiado minuciosos con el asesinato, por lo que los procesos que hacen cosas importantes en la conexión anterior nunca podrían terminar su negocio. Entonces dejamos caer estas líneas
y como el hardware y la configuración de la máquina lo permiten, aumentamos el número de conexiones permitidas en el servidor agregando
a nuestro archivo de configuración. Esto solucionó nuestro problema por ahora y aprendimos algo sobre matar conexiones mysql.
fuente
Si sabe que va a estar desconectado por un tiempo, puede cerrar su conexión, hacer su procesamiento, volver a conectar y escribir sus informes.
fuente