MySQL导入数据出现错误:Got a packet bigger than ‘max_allowed_packet’ bytes
原因:
导入的数据大于系统的限制的最大包大小。
也许插入的数据太大了,不过因为当前做的项目不可避免会遇到这个大数据插入的情况,因此只能更改MySQL的默认配置。
方式一:全局设置 老版本
首先登陆mysql查看当前该值的大小
show variables like ‘%max_allowed_packet%’ ;可以登录Mysql去修改:
SET GLOBAL max_allowed_packet=150M;
错误码: 1232
Incorrect argument type to variable 'max_allowed_packet'
Execution Time : 00:00:00:000
Transfer Time : 00:00:00:000
Total Time : 00:00:00:000
方式二:新版本方式【其实是MySQL工具接受的参数不一样】
上面的方式失败后,请用下面的方式
SET GLOBAL max_allowed_packet=152428800;
设置缓冲区为:150M 然后就可以继续导入操作了。
导入结束后记得修改回去:默认是比较小的
SET GLOBAL max_allowed_packet=10M;
方式三:当设置了值但是不生效时,终极解决办法
新版本有的命令执行了并没有效果,这样的操作,需要这样:
[root@localhost ~]# mysql --help | grep my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
[root@localhost ~]# vi /etc/my.cnf
加入这一行:
max_allowed_packet = 100M
保存退出后,记得重启数据库哦
完整配置,仅供参考
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
#MySQL 5.7 和up实现了对功能依赖的检测。如果启用了only_full_group_by SQL模式,MySQL拒绝选择列表
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_allowed_packet = 100M
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/160909.html