您的位置:首页 > 数据库 > SQL

MySQL 导入sql 错误 Got a packet bigger than 'max_allowed_packet' bytes

2017-12-25 14:36 736 查看
在测试mysql备份文件是否可正常还原时,即将备份文件还原到另一台服务器实例上,出现了一系列的错误。

其中的错误如下:
[Err] 1153 - Got a packet bigger than 'max_allowed_packet' bytes

[Err] 1046 - No database selected

[Err] 1231 - Variable 'collation_connection' can't be set to the value of 'NULL'

………………

原因:
主要为第一个错误。导入数据包大于系统设置的 max_allowed_packet 大小。

还原的实例版本为 :mysql 5.7.13-log
默认 max_allowed_packet  大小为:4M

在 mysql 中,1个 sql 语句发送到 MySQL 服务器,1行数据发送到客户端,或者二进制日志从 master 发送到 slave ,这些都作为一个包,(mysql 5.7 最大包为 1GB)。而我的备份脚本中,有的表字段类型为 longtext,其插入的比较长,才导致了错误。

解决方法:
4M 既然不够,那就设置 20 MB 吧。

查看当前 max_allowed_packet 大小:
show variables like 'max_allowed_packet';
show variables where Variable_name = 'max_allowed_packet';
在命令行设置全局变量,新的连接立即生效:(windows 中写字节大小)
set global max_allowed_packet = 20*1024*1024;
同时在配置文件中添加以下参数:
max_allowed_packet = 20M

参考:Packet Too Large
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐