it-swarm-es.com

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

Estoy tratando de importar un archivo de volcado de 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.

11
Jeremy French

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 suena como si hubiera 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 el [mysqld] sección modifica 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. Como su consulta parece ser enorme, debería 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 alterar 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, vea B.1.2.10. Paquete demasiado grande en el manual de MySQL.

23
Mihai Limbăşan

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

Además 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.

1
Krishna Pandey

¿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.

0
Dave Cheney

¿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)

0
Brent