MySQL Packets larger than max_allowed_packet are not allowed

MySQL Packets larger than max_allowed_packet are not allowed

 

 

MySQL的一个系统参数:max_allowed_packet,其默认值为1048576(1M),
查询:show VARIABLES like '%max_allowed_packet%';
修改此变量的值:MySQL安装目录下的my.ini文件中的[mysqld]段中的"max_allowed_packet = 1M",如更改为4M(如果没有这行内容,增加一行),保存,重起MySQL服务。现在可以load大于1M的文件了。

 

mysql根据配置文件会限制server接受的数据包大小。

有时候大的插入和更新会被max_allowed_packet 参数限制掉,导致失败。

查看目前配置

show VARIABLES like '%max_allowed_packet%';

显示的结果为:

+--------------------+---------+

| Variable_name      | Value   |

+--------------------+---------+

| max_allowed_packet | 1048576 |

+--------------------+---------+

以上说明目前的配置是:1M

修改方法

1) 解决方法

修改mysql安装目录的my.ini或者my-default.ini来修改,在[mysqld]段 添加

max_allowed_packet = 20M

 

 

 

通常通过MySQL的"load data local infile"语句将一个文本文件中的内容导入到数据库中,
这样速度会很快,但今天发现如果文本的大小超过1M时,出现异常:“Packets larger than max_allowed_packet are not allowed”  

 

MySQL的一个系统参数:max_allowed_packet,其默认值为1048576(1M),
查询:show VARIABLES like '%max_allowed_packet%';
修改此变量的值:MySQL安装目录下的my.ini文件中的[mysqld]段中的"max_allowed_packet = 1M",如更改为4M(如果没有这行内容,增加一行),保存,重起MySQL服务。现在可以load大于1M的文件了。

mysql max_allowed_packet 查询和修改

MySQLWindows

mysql根据配置文件会限制server接受的数据包大小。

有时候大的插入和更新会被max_allowed_packet 参数限制掉,导致失败。

查看目前配置

show VARIABLES like '%max_allowed_packet%';

显示的结果为:

 

+--------------------+---------+

| Variable_name      | Value   |

+--------------------+---------+

| max_allowed_packet | 1048576 |

+--------------------+---------+

 

以上说明目前的配置是:1M

 

修改方法

1) 方法1

可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。

max_allowed_packet = 20M

如果找不到my.cnf可以通过

mysql --help | grep my.cnf

去寻找my.cnf文件。

2) 方法2

(很妥协,很纠结的办法)

进入mysql server

在mysql 命令行中运行

set global max_allowed_packet = 2*1024*1024*10

然后关闭掉这此mysql server链接,再进入。

show VARIABLES like '%max_allowed_packet%';

查看下max_allowed_packet是否编辑成功

 

 

 

 

Caused by: org.hibernate.exception.GenericJDBCException: Packet for query is too large (8742 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.

也就是这个sql语句太长了,超过1024b(1K)。

在 数据库查看了一下show VARIABLES like '%max_allowed_packet%';  确实 max_allowed_packet  的值被设为了1024。这个值明显不够,而且mysql默认的应该是1M才对。于是我修改了服务器的my.cnf,添加了max_allowed_packet =1M。

执行 show VARIABLES like '%max_allowed_packet%'; 发现修改成功,变成1048576了。

可是今天问题有出现了,max_allowed_packet  又被重置为1024了,my.cnf没人修改,没人重启mysql服务。查看数据库所在服务器的系统内存发现,内存不够用了,查资料和mysql日志发现,

是由于内存不足,mysql自动重置了一些配置。

以上就介绍了关于max_allowed_packet这个值设置后自动重置问题,包括了方面的内容,希望对MySql有兴趣的朋友有所帮助。

转载于:https://www.cnblogs.com/liufei88866/p/4269259.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值