IT

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有兴趣的朋友有所帮助。

posted on 2015-02-03 09:59  liufei  阅读(750)  评论(0编辑  收藏  举报