mysql数据库报错:Got a packet bigger than 'max_allowed_packet' bytes
今天从使用sqlyog从服务器上导出了一个sql文件,但是导入到本地的时候,莫名的出现错误,而且MySQL数据库还自动关闭了,反反复复试验了几次均没有成功,不知道是哪里的问题,于是便一个一个表的导入。最后在导入最后一个表的时候,怎么也无法成功,一直失败。
sqlyog一直提示如下错误:Got a packet bigger than 'max_allowed_packet' bytes
经过查询终于找到了问题所在:
就是使用SQLyog工具导出MySQL数据时,当数据量大时,导出不会错误,但导入时会出现错误。如果将SQL单独执行会发现是Error Code:1153 Got a packet bigger than 'max_allowed_packet' bytes错误。
解决方法:
方法一(亲测可用):
找到你的MySQL的安装位置,用记事本等工具打开my.ini文件,如下:
在 [MySQLd] 部分添加一句(如果存在,调整其值就可以):
max_allowed_packet=16M(根据实际情况设置)
注意,在[client]和[mysql]部分增加无效,那个是客户端读取的参数。
如下:
然后重启mysql的服务:
这次再导入你的sql语句的时候就不会报错了。
方法二:
Mysql 5.1 遇到的信息包过大问题 用客户端导入数据的时候,遇到 错误代码: 1153 - Got a packet bigger than 'max_allowed_packet' bytes 终止了数据导入。
当MySQL客户端或mysqld服务器收到大于max_allowed_packet字节的信息包时,将发出“信息包过大”错误,并关闭连接。对于某些客户端,如果通信信息包过大,在执行查询期间,可能会遇到“丢失与MySQL服务器的连接”错误。
客户端和服务器均有自己的max_allowed_packet变量,因此,如你打算处理大的信息包,必须增加客户端和服务器上的该变量。一般情况下,服务器默认max-allowed-packet为1MB
如果你正在使用mysql客户端程序,其max_allowed_packet变量的默认值为16MB。要想设置较大的值,可用下述方式启动mysql:
mysql>mysql --max-allowed-packet=32M
当MySQL客户端或mysqld服务器收到大于max_allowed_packet字节的信息包时,将发出“信息包过大”错误,并关闭连接。对于某些客户端,如果通信信息包过大,在执行查询期间,可能会遇到“丢失与MySQL服务器的连接”错误。
客户端和服务器均有自己的max_allowed_packet变量,因此,如你打算处理大的信息包,必须增加客户端和服务器上的该变量。一般情况下,服务器默认max-allowed-packet为1MB
如果你正在使用mysql客户端程序,其max_allowed_packet变量的默认值为16MB。要想设置较大的值,可用下述方式启动mysql:
mysql>mysql --max-allowed-packet=32M
记得重启服务哦!