sql >> Base de Datos >  >> RDS >> Mysql

PHP Mysql PDO:error general:el servidor MySQL 2006 se ha ido

Algunas otras razones comunes por las que el servidor MySQL ha desaparecido son:

  • Usted (o el administrador de la base de datos) ha eliminado el subproceso en ejecución con una declaración KILL o un comando kill de mysqladmin.

  • Intentó ejecutar una consulta después de cerrar la conexión con el servidor. Esto indica un error lógico en la aplicación que debe corregirse.

  • Una aplicación cliente que se ejecuta en un host diferente no tiene los privilegios necesarios para conectarse al servidor MySQL desde ese host.

  • Obtuvo un tiempo de espera de la conexión TCP/IP en el lado del cliente. Esto puede suceder si ha estado usando los comandos:mysql_options(..., MYSQL_OPT_READ_TIMEOUT,...) o mysql_options(..., MYSQL_OPT_WRITE_TIMEOUT,...). En este caso, aumentar el tiempo de espera puede ayudar a resolver el problema.

  • Ha encontrado un tiempo de espera en el lado del servidor y la reconexión automática en el cliente está deshabilitada (el indicador de reconexión en la estructura MYSQL es igual a 0).

  • Está utilizando un cliente de Windows y el servidor había interrumpido la conexión (probablemente porque caducó el tiempo de espera) antes de que se emitiera el comando.

  • El problema en Windows es que, en algunos casos, MySQL no recibe un error del sistema operativo cuando escribe en la conexión TCP/IP al servidor, sino que recibe el error cuando intenta leer la respuesta desde la conexión.

  • La solución a esto es hacer mysql_ping() en la conexión si ha pasado mucho tiempo desde la última consulta (esto es lo que hace Connector/ODBC) o configurar wait_timeout en el servidor mysqld tan alto que en la práctica nunca fuera.

  • También puede obtener estos errores si envía una consulta al servidor que es incorrecta o demasiado grande. Si mysqld recibe un paquete que es demasiado grande o está fuera de servicio, asume que algo salió mal con el cliente y cierra la conexión. Si necesita consultas grandes (por ejemplo, si está trabajando con columnas BLOB grandes), puede aumentar el límite de consultas configurando la variable max_allowed_packet del servidor, que tiene un valor predeterminado de 4 MB. Es posible que también deba aumentar el tamaño máximo de paquete en el extremo del cliente. Se proporciona más información sobre cómo configurar el tamaño del paquete en la Sección B.5.2.10, "Paquete demasiado grande".

  • Una declaración INSERT o REPLACE que inserta muchas filas también puede causar este tipo de errores. Cualquiera de estas declaraciones envía una única solicitud al servidor, independientemente del número de filas que se inserten; por lo tanto, a menudo puede evitar el error reduciendo el número de filas enviadas por INSERTAR o REEMPLAZAR.

  • También obtiene una conexión perdida si está enviando un paquete de 16 MB o más si su cliente es anterior a 4.0.8 y su servidor es 4.0.8 y superior, o al revés.

  • También es posible ver este error si fallan las búsquedas de nombres de host (por ejemplo, si el servidor DNS en el que se basa su servidor o red deja de funcionar). Esto se debe a que MySQL depende del sistema host para la resolución de nombres, pero no tiene forma de saber si está funcionando; desde el punto de vista de MySQL, el problema es indistinguible de cualquier otro tiempo de espera de la red.

  • También puede ver que el servidor MySQL ha desaparecido si MySQL se inicia con la opción --skip-networking.

  • Otro problema de red que puede causar este error ocurre si su firewall bloquea el puerto MySQL (predeterminado 3306), lo que impide cualquier conexión al servidor MySQL.

  • También puede encontrar este error con aplicaciones que bifurcan procesos secundarios, todos los cuales intentan usar la misma conexión con el servidor MySQL. Esto se puede evitar usando una conexión separada para cada proceso hijo.

  • Encontró un error en el que el servidor murió mientras ejecutaba la consulta.

Consulte este enlace:Gone Away