MySQL max_allowed_packet设置及问题
异常摘要:
[SQL] Query jeecgboot-mysql-5.7 start
[ERR] 1153 - Got a packet bigger than 'max_allowed_packet' bytes
[ERR]
原因分析:
mysql根据配置文件会限制server接受的数据包大小。有时候大的插入和更新会受max_allowed_packet 参数限制,导致写入或者更新失败,导致项目访问异常。
解决过程:
1. 进入mysql
mysql -h localhost -u root -p 回车进行mysql数据库。
2. 查看max_allowed_packet最大允许包
输入命令 show VARIABLES like ‘%max_allowed_packet%’;
显示如下
+--------------------------+------------+
| Variable_name | Value |
+--------------------------+------------+
| max_allowed_packet | 4194304 |
| slave_max_allowed_packet | 1073741824 |
+--------------------------+------------+
2 rows in set, 1 warning (0.01 sec)
可以从返回结果看出max_allowed_packet当前为4M,显然小了。
3. 更改max_allowed_packet包大小
方案一,临时修改:输入命令 set global max_allowed_packet = 210241024*10; (注意,这里的大小只能填写字节。重启mysql服务后,配置将会失效!)然后关闭掉这此mysql server链接,再进入查看。
方案二,修改my.ini文件,在[mysqld]部分加入 max_allowed_packet=大小
如:max_allowed_packet = 20M
(注意,这里可以写XXM,但后面不用加";"号。如果存在max_allowed_packet,直接调整其值。重启mysql服务后,将永久生效)
mysql --help | grep my.cnf
去寻找my.cnf文件。linux下该文件在/etc/下。
方案三,官网给出的解决办法是加启动参数,找到mysql的启动脚本,把启动参数贴上
说明
包或任何生成的/中间字符串的最大大小。这个过程大部分发生在load data file中,有时也发生在update,insert中。
包消息缓冲区初始化为net_buffer_length字节,但需要时可以增长到max_allowed_packet字节。该值默认很小,以捕获大的(可能是错误的)数据包。
如果你使用大的BLOB 列或长字符串,你必须增加该值。应同你想要使用的最大的BLOB一样大。max_allowed_packet的协议限制为1GB。这个值必须是1024的倍数;如果不是1024倍数的值,mysql就会自动四舍五入为最接近的1024的倍数。
当你改变max_allowed_packet的值,你就改变了消息缓冲区的大小,你也应该在客户端允许的范围内修改客户端的buffer大小。在客户端,max_allowed_packet默认值是1GB。你可以通过命令行或者配置文件,改变客户端的max_allowed_packet值。
在MySQL5.0.84版本中,会话max_allowed_packet值,还只是只读的。在5.0.84之前的版本,设置会话中可以设置max_allowed_packet的值,但是没什么作用。
相关文章
- MySQL导出文件的实战技巧(mysql输出文件)
- Mysql: 如何取消主键设置(mysql取消主键)
- MySQL:设置安全的用户名和密码(mysql用户名和密码)
- MySQL中判断字符串长度的方法(mysql判断字符串长度)
- MySQL:设置自增主键初始值的三种方法(mysql自增主键初始值)
- MySQL:设置空值的技巧(mysql设置null值)
- MySQL 函数执行权限审慎管理(mysql函数执行权限)
- MySQL中常用函数支持及其应用(mysql函数支持)
- MySQL:优越的数据库解决方案(mysql的优点)
- 如何修改MySQL的时间设置(修改mysql时间)
- MySQL事务:未提交的影响(mysql事务没有提交)
- MySQL索引分区的优势和设置.(mysql分区主键)
- MySQL中设置默认值的语句使用方法(mysql默认值语句)
- 如何在 MySQL 中设置外键?(mysql怎么设置外键)
- 掌握MySQL中创建表的时间法则(mysql 创建表 时间)
- MySQL远程连接:探讨常用软件及设置方法(mysql远程连接软件)
- MySQL精准调整长度保证数据准确性(mysql设置长度)
- MySQL的主从数据表设置与应用(mysql中主从数据表)
- MySQL中存储大数据的BLOB类型详解(mysql中blob线)
- 学习MySQL如何设置主外键约束(mysql两表设置主外键)
- MySQL两表最大值查询简单易懂的实现方法(mysql两表max查询)
- Bat探测MySQL数据库版本号(bat获取mysql版本)
- MySQL语句实现 ASP 程序开发精彩功能(asp mysql语句)
- 这五天你可以遇见MySQL(5天带你玩转mysql)
- MySQL加索引的负面影响(mysql中加索引的坏处)
- MySQL 冒号前后值详解(mysql中冒号前后值)
- MySQL编码UTF8的设置方法(mysql+_utf8)
- MySQL安全设置mysqlsecure的使用方法(mysql_secure)
- MySQL 数据库不允许字段为空的设置(mysql 不允许空)
- MySQL下载需要多少内存(mysql下载占多大内存)
- MySQL不允许默认值的设置(mysql不能设置默认值)
- MySQL字段不需要设置长度(mysql不用设置长度)