一、错误问题
这个问题是在迁移数据库、备份还原或数据导入时报错:1153 Got a packet bigger than 'max_allowed_packet' bytes
二、出现原因
sql操作的时间过长,或者是传送的数据太大(例如使用insert ... values的语句过长, 这种情况可以通过修改max_allowed_packed的配置参数来避免,也可以在程序中将数据分批插入(使用mysql limit进行分页,循环分批处理数据));
max_allowed_packet就是指mysql服务器端和客户端在一次传送数据包的过程当中最大允许的数据包大小,而mysql的默认max_allowed_packet的值为16M,所以MySQL根据配置文件会限制Server接受的数据包大小大的插入和更新会受 max_allowed_packet 参数限制,导致大数据写入或者更新失败。
三、解决办法
修改参数:
set global max_allowed_packet=1024*1024*512;
查看参数值:
show global variables like 'max_allowed_packet';