我有一个数据库中的MYSQL转储,我试图移动到新的数据库服务器.当我尝试导入我的SQL转储时,我收到以下错误:
MySQL Error 2006 (HY000) at line 406: MySQL server has gone away
Run Code Online (Sandbox Code Playgroud)
我搜索了问题,大多数人通过更改wait_timeout的值来解决问题.但是,我当前的值设置为28800(8小时),并且当我运行导入时,错误会在不到8秒的时间内出现.
我也尝试将max_allowed_packet的值设置为1073741824,但这也没有解决问题.
通过mysql转储,转储中有相当多的blob列,但整体文件大小只有6 MB.
有没有人对其他可能是什么问题有任何想法?
Pau*_*ice 47
为了未来搜索者的利益添加此答案,因为它解释了为什么增加数据包大小解决了问题:
情况是,如果客户端发送的SQL语句长于服务器max_allowed_packet设置,则服务器将断开客户端.来自同一客户端实例的下一个查询将发现'MySQL服务器已经消失'.
...但是,如果问题是"错误:2020(CR_NET_PACKET_TOO_LARGE)"错误,那么当然更可取.
摘自并感谢peter_laursen的博客文章
在OSX 10.7(Lion)上,我创建了一个文件/etc/my.cnf,其中包含以下内容:
[mysqld]
max_allowed_packet = 12000000
Run Code Online (Sandbox Code Playgroud)
然后停止了mysql服务器:
/usr/local/bin/mysql.server stop
Run Code Online (Sandbox Code Playgroud)
当它自动重启时,我能够执行我的插入.
在尝试导入130 MB文件时,将max_allowed_packet增加到12 MB(12000000)解决了我的问题.
更改ini文件或在MySQL Workbench中选择文件/网络(需要MySQL重启).
如果仍然出现错误,请尝试增加更多(100 MB).记得在完成后减少它.