mysql是使用率很高的数据库,navicat是常用的工具之一。
问题描述:
最近在使用navicat备份mysql数据后,在另外一台机器上还原的时候,碰到一个问题,在还原完成后,表都创建成功了,但是部分表的数据确没有还原。
经查看还原窗口日志:
原来是出现了:2006-MySQL server has gone away的错误,问题正好出现在还原大数据量表的时侯,
应该是传送的数据太大(如使用insert ... values的语句过长) 。
应该是传送的数据太大(如使用insert ... values的语句过长) 。
这种情况可以采取以下解决办法:
- 修改mysql的配置文件my.ini(或my.cnf)的max_allowed_packed的配置参数。
- 在mysql中执行sql命令修改。
- 程序中将数据分批插入。
在这里主要说一下第1和2种方法:
解决办法1:
在my.ini(my.cnf)文件中添加或者修改以下变量:
在my.ini(my.cnf)文件中添加或者修改以下变量:
max_allowed_packet = 100M(具体大小请根据需要自行调节) max_allowed_packet 作用是用来控制其通信缓冲区的最大长度。
解决办法2:
使用MySQL命令:
使用MySQL命令:
//查看当前max_allowed_packet的大小 show global variables like 'max_allowed_packet'; //修改max_allowed_packet的大小 mysql> set global max_allowed_packet=1024*1024*100;
切记:还原成功后,再改回来!!
当然也可能其它问题导致此错误,此方法不一定能解决!
转载文章来源:http://www.toutiao.com/i6454689161549971981/