Error general de la base de datos: el servidor MySQL 2006 se ha ido

24

Recientemente comencé a recibir un error cada vez que intento agregar un contenido sin importar el tipo. Este es el error que aparece en el navegador:

Excepción adicional no capturada lanzada mientras se maneja la excepción.

PDOException original: SQLSTATE [HY000]: Error general: el servidor MySQL 2006 se ha ido: SELECCIONE EL CONTEO (cid) DESDE {comentario} DONDE estado =: estado; Matriz ([: estado] => 0) en comment_count_unpublished () (línea 313 de /Applications/MAMP/htdocs/modules/comment/comment.module).

Adicional

PDOException: SQLSTATE [HY000]: Error general: el servidor MySQL 2006 ha desaparecido: INSERT INTO {watchdog} (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (: db_insert_placeholder_0,: db_insert_placeholder_0,: db_insert_placeholder_1 ,: db_insert_placeholder_2,: db_insert_placeholder_3,: db_insert_placeholder_4,: db_insert_placeholder_5,: db_insert_placeholder_6,: db_insert_placeholder_7,: db_insert_placeholder_8,: db_insert_placeholder_9); Matriz ([: db_insert_placeholder_0] => 1 [: db_insert_placeholder_1] => php [: db_insert_placeholder_2] =>% type:! Message en% function (line% line of% file). [: Db_insert_placeholder_3] => a: 6: { s: 5: "% type"; s: 12: "PDOException"; s: 8: "! message"; s: 154: "SQLSTATE [HY000]: Error general: 2006 MySQL server se ha ido: SELECCIONE EL CONTEO (cid) DESDE {comentario} DONDE estado =: estado; Matriz ([: estado] = & gt; 0) "; s: 9:"% function "; s: 27:" comment_count_unpublished () "; s: 5:"% file "; s: 56:" / Aplicaciones / MAMP /htdocs/modules/comment/comment.module";s:5:"%line";i:313;s:14:"severity_level";i:3;} [: db_insert_placeholder_4] => 3 [: db_insert_placeholder_5] = > [: db_insert_placeholder_6] =>http: // localhost: 8888 /? q = nodo% 2Fadd% 2Farcade-project & amp ; [: db_insert_placeholder_7] => http: // localhost: 8888 / [: db_insert_placeholder_8] => 127.0.0.1 [: db_insert_placeholder_9] => 1338336955) en dblog_watchdog () (línea 154 de / Aplicaciones / MAMP / htdocs / modules / dblog / dblog.module).

También recibo el siguiente error en mi archivo de error php:

Error fatal de PHP: excepción no detectada 'PDOException' con el mensaje 'SQLSTATE [HY000]: error general: el servidor MySQL 2006 se ha ido' en /Applications/MAMP/htdocs/includes/database/database.inc:2136


Seguimiento de pila: 0 /Applications/MAMP/htdocs/includes/database/database.inc(2136): PDOStatement-> execute (Array)
1 /Applications/MAMP/htdocs/includes/database/database.inc(664): DatabaseStatementBase- > execute (Array, Array)
2 /Applications/MAMP/htdocs/includes/database/database.inc(2315): DatabaseConnection-> query ('SELECT expire, ...', Array, Array)
3 / Applications / MAMP / htdocs / includes / lock.inc (167): db_query ('SELECT expire, ...', Array)
4 /Applications/MAMP/htdocs/includes/lock.inc(146): lock_may_be_available ('theme_registry: ...' )
5 /Aplicaciones/MAMP/htdocs/includes/theme.inc(447): lock_acquire ('theme_registry: ...')
6 /Applications/MAMP/htdocs/includes/bootstrap.inc(427): ThemeRegistry-> set ( Formación)
7 [función interna]: DrupalCacheArray -> __ destruct ()
8 {main} arrojado en /Applications/MAMP/htdocs/includes/database/database.inc en la línea 2136

Tengo algunos problemas para descifrar estos mensajes de error. ¿Alguien podría ayudarme a entender lo que está pasando aquí?

Mike2012
fuente

Respuestas:

31

9 de cada 10 veces este error es causado por una max_allowed_packetconfiguración insuficientemente grande en el archivo my.cnf de su servidor MySQL.

El valor predeterminado estándar para MAMP en mi experiencia es 1M, que generalmente no es suficiente para Drupal (especialmente teniendo en cuenta el tamaño de algunas de las cadenas de caché que genera).

Intente aumentar esa configuración gradualmente para ver si el error desaparece. Estoy seguro de que una búsqueda rápida en Google te dirá cómo hacerlo en MAMP.

Clive
fuente
Afortunadamente, mi caso no entró en la categoría 1 de cada 10 veces. ¡Tus recomendaciones funcionaron de maravilla! ¡Gracias!
Mike2012
Frente al mismo error en windows. He configurado apache, mysql y php stack localmente ... guía
Prerit Mohan
Y en caso de alojamiento compartido, ¿qué puedo hacer?
mohammed amine bourkadi
Póngase en contacto con su anfitrión, pídale que haga el cambio. Si no pueden / no quieren, debe decidir si este host es el adecuado para usted @mohammedaminebourkadi.
Clive
6

Este error de MySQL / MariaDB:

Error: 2006 ( CR_SERVER_GONE_ERROR) - El servidor MySQL se ha ido

significa básicamente que el cliente no pudo enviar una pregunta al servidor .

Esto podría ocurrir ya sea por fallas temporales, consultas SQL demasiado grandes o inválidas, configuración incorrecta de su servidor o limitación de su proveedor de hosting.

En general, este error podría ser el resultado de varias cosas, como:

  • una consulta al servidor es incorrecta o demasiado grande,

    Solución: aumentar la max_allowed_packetvariable .

    Nota: Asegúrese de que la variable esté debajo de la [mysqld]sección, no [mysql].

    Nota: No olvide reiniciar el servidor MySQL / MariaDB.

  • Se agotó el tiempo de espera de la conexión TCP / IP en el lado del cliente.

    Solución: aumentar la wait_timeoutvariable .

  • Intentó ejecutar una consulta después de que se cerró la conexión al servidor.

    Solución: Se debe corregir un error lógico en la aplicación.

  • Las búsquedas de nombres de host fallaron (p. Ej., Problema del servidor DNS) o el servidor se inició con la --skip-networkingopción

    Otra posibilidad es que su firewall bloquee el puerto MySQL (por ejemplo, 3306 por defecto).

  • El subproceso en ejecución se ha eliminado, así que vuelva a intentarlo.

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

  • Un cliente que se ejecuta en un host diferente no tiene los privilegios necesarios para conectarse.

  • Y muchos más, así que aprenda más en: B.5.2.9 El servidor MySQL se ha ido .

Para obtener más detalles, consulte su MySQL o los registros del sistema (por ejemplo /var/log/messages).

Para depurar el servidor o cliente MySQL, verifique: 26.5 Depuración y portabilidad de MySQL .


En caso de que esté intentando importar la base de datos del archivo usando drusho mysqlcomando, puede:

  • Agregue una opción de forzar ( -f) para mysqlcontinuar y ejecutar el resto de las consultas.

    Esto es útil si la base de datos tiene algunas consultas grandes relacionadas con la memoria caché que son grandes, pero de todos modos no son relevantes.

    Usando drush, intente:cat foo.sql | $(drush sqlconnect) -f

  • Intente aplicar la --max-allowed-packetopción mysqlcon valores más pequeños.

  • Aumente max_allowed_packetywait_timeout en la configuración de su servidor (por ejemplo ~/.my.cnf).

  • Volcar la base de datos original nuevamente usando la --skip-extended-insertopción para desglosar las consultas grandes. Luego importe el archivo nuevamente.


Ver también: ERROR 2006 (HY000): el servidor MySQL se ha ido

kenorb
fuente
3

La respuesta que da normalmente @Clive es el caso, pero puede haber una causa adicional, especialmente con los formularios para agregar nodos.

Los formularios para agregar nodos generalmente son grandes, y procesarlos puede usar mucha memoria (especialmente si hay algún procesamiento de imagen durante el guardado, como con los módulos de recorte). Si el servidor se queda sin memoria, el proceso mysqld puede ser anulado, lo que da como resultado el mismo mensaje "desaparecido".

La clave es buscar en los registros del servidor. En una máquina CentOS, puede ver la siguiente entrada en / var / log / messages

1 de enero a las 00:00:00 kernel del nombre del servidor: sin memoria: eliminar el proceso XXXX (mysqld) puntuación XXX o sacrificar el hijo
1 de enero a las 00:00:00 kernel del nombre del servidor: proceso eliminado XXXX, UID XX, (mysqld) total-vm: XXXkB , anon-rss: XXXkB, archivo-rss: XXkB

La solución aquí es agregar más RAM o agregar / aumentar el intercambio.

mpdonadio
fuente