天天看点

Packets larger than max_allowed_packet are not allowed(mysql数据查询提示:不允许超过允许的最大数据包)解决方案

问题背景:

   首先我的项目运用的时Mysql,在做一个数据更新操作的时候,提示异常:System.Exception:“ExecuteNonQuery:Packets larger than max_allowed_packet are not allowed.”,通过查找了网上的一些方案主要是因为本地数据库运行最大查询的数据包太小的原因,也正是因为这个运行数据更新一直无法成功,导致后面的操作无法进行。

说明:

  一般默认情况下,max_allowed_packet 的包的大小默认时1024*1024(1Mb),你可以首先使用命令:

查询状态:show VARIABLES like '%max_allowed_packet%';
      

  我查出的结果是:max_allowed_packet:1024   没错这就是问题所在。

解决方法:

使用SQL语句来修改限制(3种推荐方式):

将长度限制设置为32MB:

SET GLOBAL max_allowed_packet=32*1024*1024;       

将长度限制设置为1GB(MySQL服务器中允许的最大值):

SET GLOBAL max_allowed_packet=1024*1024*1024; 
      

直接设置会话SET SESSION:

SET SESSION max_allowed_packet=1024*1024*1024;       

最后使用上面任何一种方式修改好后重启一些数据库,然后在查询数据包的大小是否改变:

show VARIABLES like '%max_allowed_packet%';      

Linux通过编辑my.cnf来修改,windows通过编辑my.ini配置

停止MySQL服务器。

根据自己的数据库安装环境进行配置:

windows找到安装mysql的位置,打开my.ini进行配置修改:

max_allowed_packet = 32M

 

Linux 修改的是:my.cnf

mysql --help | grep my.cnf

去寻找my.cnf文件

linux下该文件在/etc/下
      

配置文件修改完成后重启数据库!

作者:追逐时光者

作者简介:一个热爱编程,善于分享,喜欢学习、探索、尝试新事物,新技术的程序猿。

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如果该篇文章对您有帮助的话,可以点一下右下角的【♥推荐♥】,希望能够持续的为大家带来好的技术文章,文中可能存在描述不正确或错误的地方,欢迎指正、补充,不胜感激 !