在命令行导入过程中不断收到“MySQL服务器已经消失”的错误

我正在使用以下命令从另一个服务器上使用mysqldump创build的160 MB文件中导入数据。 我正在导入的环境正在运行最新的WAMP服务器,并将max_allowed_pa​​cket设置为“16M”。

C:\wamp\bin\mysql\mysql5.1.36\bin>mysql --max_allowed_packet=15M -u root -pXXX drupal < C:\prod.sql ERROR 2006 (HY000) at line 644: MySQL server has gone away 

这似乎一直发生约39秒,85.5 MB的import。

我读了很多关于在my.ini中增加max_allowed_pa​​cket的build议,所以我做了16M而不是默认的1M。 然而,无论我做什么,我收到的错误都会持续存在。 有任何想法吗?

现在在my.ini中解决了:

 [wampmysqld] port = 3306 socket = /tmp/mysql.sock key_buffer = 384M max_allowed_packet = 100M table_cache = 4096 sort_buffer_size = 2M net_buffer_length = 2M read_buffer_size = 2M read_rnd_buffer_size = 64M myisam_sort_buffer_size = 64M basedir=c:/wamp/bin/mysql/mysql5.1.36 log-error=c:/wamp/logs/mysql.log datadir=c:/wamp/bin/mysql/mysql5.1.36/data thread_cache_size = 8 query_cache_size = 32M innodb_buffer_pool_size = 384M innodb_additional_mem_pool_size = 20M # Set .._log_file_size to 25 % of buffer pool size innodb_log_file_size = 10M innodb_log_buffer_size = 64M innodb_flush_log_at_trx_commit = 1 innodb_lock_wait_timeout = 100 wait_timeout = 28800 [mysqldump] quick max_allowed_packet = 100M [isamchk] key_buffer = 20M sort_buffer_size = 20M read_buffer = 2M write_buffer = 2M [myisamchk] key_buffer = 20M sort_buffer_size = 20M read_buffer = 2M write_buffer = 2M 

什么是SQL中的数据结构?

有可能一列是一个blob,也许是一个大于16M的图像或PDF。 为什么不将max_allowed_pa​​cket设置为160MB(因为没有一个数据包可以大于整个文件大小)并再次testing,您可以随时将其切换回。

如果您使用SHOW TABLE STATUS命令获取数据大小,您可以获得更准确的值,然后您将看到它应该是多大。

然而,错误是非常普遍的,有一个可能的原因列表,你看到在MySQL网站上的错误

你将不得不通过每一个来找出问题,但根据我的经验,它一直是一个包太大。 我有一个生产箱的max_packet_size设置为180MB,这就是为什么。

尝试在my.cnf中将wait_timeout设置为100,然后重新启动服务器

 wait_timeout = 100 

Richard的答案是常见的解决scheme,请检查您的.err日志。 这可能是MySQL内存不足,并重新启动。 我最近也遇到了这个硬件故障。