mysql下的max_allowed_packet参数设置
2022/8/6 2:25:28
本文主要是介绍mysql下的max_allowed_packet参数设置,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
参考地址:https://blog.csdn.net/qq_34988304/article/details/92762504
MySQL根据配置文件会限制Server接受的数据包大小。有时候大的插入和更新会受 max_allowed_packet 参数限制,导致写入或者更新失败。(比方说导入数据库,数据表)
查看目前配置:
代码如下:
mysql> show VARIABLES like '%max_allowed_packet%';
+--------------------------+------------+
| Variable_name | Value |
+--------------------------+------------+
| max_allowed_packet | 1024 |
| slave_max_allowed_packet | 1073741824 |
+--------------------------+------------+
1
2
3
4
5
6
7
2 rows in set (0.00 sec)
mysql 数据库默认max_allowed_packet为1024/1KB
修改方法
1、修改配置文件
可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。
代码如下:
max_allowed_packet = 20M
如果找不到my.cnf可以通过
代码如下:
mysql --help | grep my.cnf
去寻找my.cnf文件。
linux下该文件在/etc/下。
2、在mysql命令行中修改
在mysql 命令行中运行:
代码如下:
set global max_allowed_packet = 2*1024*1024*10
注意:
这样修改会报错:mysql> set max_allowed_packet=16MB;
ERROR 1232 (42000): Incorrect argument type to variable 'max_allowed_packet'
然后退出命令行,重启mysql服务,再进入。
mysql重启命令:
1、使用 service 启动:service mysqld restart
2、使用 mysqld 脚本启动:/etc/inint.d/mysqld restart
代码如下:
show VARIABLES like '%max_allowed_packet%';
查看下max_allowed_packet是否编辑成功
注意:该值设置过小将导致单个记录超过限制后写入数据库失败,且后续记录写入也将失败。
参考地址:https://blog.csdn.net/nauwzj/article/details/120726598
异常摘要:
[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 = 2*1024*1024*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下的max_allowed_packet参数设置的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程
- 2024-11-01部署MySQL集群学习:新手入门教程
- 2024-11-01部署MySQL集群入门:新手必读指南
- 2024-10-23BinLog入门:新手必读的MySQL二进制日志指南
- 2024-10-23Binlog入门:MySQL数据库的日志管理指南