"El servidor MySQL se ha ido" al intentar importar un archivo de volcado grande

11

Estoy tratando de importar un archivo de volcado MySQL.

El archivo fue creado en un servidor Linux, estoy tratando de importarlo en Windows

Me conecté a la línea de comando y ejecuté:

SOURCE c:/dump.sql

Pero esto parece haber generado algunos problemas de juego de caracteres (específicamente con comillas inteligentes y otros signos de puntuación no estándar).

Me sugirieron que corriera:

mysql -u username -d dbase < c:\dump.sql

Cuando intento esto me sale el error

ERROR 2006 (HY000) at line 149351: MySQL server has gone away

Un poco de google sugirió que esto tenía que ver con el interruptor max_allowed_packet, pero lo he intentado y no ha funcionado. ¿Alguien tiene alguna idea de lo que esto podría ser?

Si alguien tiene una sugerencia sobre el problema del juego de caracteres, eso también sería útil.

Jeremy French
fuente
¿Cualquier retroalimentación? [15 caracteres necesarios para comentar]
Mihai Limbăşan

Respuestas:

23

Mi primer instinto después de leer el mensaje de error en el título de la pregunta fue sugerir aumentar max_allowed_packet. Mencionaste que intentaste "ese cambio" y no ha funcionado. ¿Puede confirmar que ha modificado correctamente el archivo de configuración del servidor? Su fraseología hace que parezca que ha intentado usar eso como un interruptor de línea de comando en la línea de comando del cliente mysql.exe, lo que no causaría que el servidor altere el comportamiento.

En resumen, lo que debe intentar hacer es localizar y editar el archivo my.cnf que su servidor está utilizando actualmente. En la [mysqld]sección, modifique la configuración de max_allowed_packet a algo como

[mysqld]
max_allowed_packet=32M

No olvide reiniciar el servidor después de alterar la configuración.

He usado 32M (un valor ridículamente grande) como ejemplo. Dado que su consulta parece ser enorme, debe probar este valor (o tal vez incluso 64M si tiene suficiente RAM) para ver si funciona.

Otra opción es dejar el servidor como está y modificar el comportamiento del cliente utilizado para generar el volcado de SQL. Dígale que limite el tamaño de las consultas individuales a menos de 1 MB, eso también debería ser el truco.

Para más detalles, véase B.1.2.10. Paquete demasiado grande en el manual de MySQL.

Mihai Limbăşan
fuente
1
Sí, solo estaba probando el interruptor de línea de comando. La razón por la que pensé que tenía un efecto era porque daba un error máximo demasiado pequeño al paquete permitido cuando lo configuraba en algo más pequeño. Probaré tu sugerencia el lunes. Gracias
Jeremy French
De nada, estoy casi seguro de que esto funcionará. Desafortunadamente, al igual que con muchos (está bien, la mayoría) de otros programas escritos en los últimos 50 años, los mensajes de error de MySQL tienden a ser malos y engañosos si aún no está familiarizado con la forma en que funciona la mente del desarrollador :).
Mihai Limbăşan
Me alegra escuchar eso, diviértete.
Mihai Limbăşan
Muy muy asombroso. Tuve este mismo problema, vine aquí para hacer la pregunta y ¡bam! resuelto @Mihai: lo que sea que te paguen; no es suficiente :)
Steven Evers
Esta solución nos ayudó cuando recibimos este error después de mover nuestro MySQL de localhost a un servidor remoto. ¡Muchas gracias!
Lea Cohen
1

En MySQL 5.7.24, se debió a una configuración anterior de MySQL 5.6

sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION. 

La siguiente opción es obligatoria si la versión de SQL es la misma 5.7.5 o superior.

sql_mode=TRADITIONAL

También hay dos parámetros max_allowed_packet en /etc/my.cnf, el otro es para mysqldump. Por favor tome nota de lo mismo.

max_allowed_packet = <1G>

Mi instalación está en CentOS7.

Krishna Pandey
fuente
0

¿Puede acceder a la instancia de MySQL en el servidor de Windows desde el cuadro de Linux?

Si es así, ¿puede ejecutar el comando en el cuadro de Linux, con el interruptor -h para conectarse al servidor en el cuadro de Windows?

mysql -u username -d dbase -h <windows host> < dump.sql

Esto podría resolver sus problemas de juego de caracteres , ya que está utilizando el cliente Linux en la caja original para realizar la importación. (Solo una suposición)

Brent
fuente
0

¿Qué dice el registro de MySQL?

A veces, este error se informa en el cliente si hay un error que no se puede corregir en el servidor. Esto puede ser un indicador de corrupción en el disco de las tablas de la base de datos.

Dave Cheney
fuente
-1

¿Tu cuenta tenía una contraseña? Quizás necesite agregar el modificador -p:

mysql -u username -p -d dbase < c:\dump.sql
Brent
fuente
Oh, probablemente no, ya que parece haber fallado en la importación.
Brent