今天研发人员在调试java程序的时候,发现了mysql报出如下问题:
java.lang.IllegalArgumentException: Packet is larger than max_allowed_packet from server configuration of 1048576 bytes
at org.gjt.mm.mysql.Buffer.ensureCapacity(Buffer.java:398)
at org.gjt.mm.mysql.Buffer.writeBytesNoNull(Buffer.java:386)
at org.gjt.mm.mysql.PreparedStatement.executeUpdate(PreparedStatement.java:352)
at com.cicro.cws.database.DBManager.execute(DBManager.java:450)
at com.cicro.cws.publish.PreparePublish.saveSiteInstanceXmlIntoDB(PreparePublish.java:827)
at com.cicro.cws.publish.PreparePublish.generatePublishFiles(PreparePublish.java:181)
at com.cicro.cws.publish.PublishManager.publish(PublishManager.java:180)
at com.cicro.cws.synchronize.InstanceSynchronize.publishSite(InstanceSynchronize.java:954)
at com.cicro.cws.site.Site.publish(Site.java:365)
IXDBA.NET技术社区
at com.cicro.cws.site.Site.run(Site.java:338)
at java.lang.Thread.run(Thread.java:536)
解决如下:
这个问题是因为导入的sql文件大于系统默认的max_allowed_packet的值,解决方法:比如在my.cnf修改增加到:max_allowed_packet=32M #或者更高,当然也可以在mysqld启动的时候加入这个参数,但是该变量必须在mysqld重新启动的时候才加载生效,所以必须重起mysqld!
我是把max_allowed_packet参数加载到了mysql启动文件mysqld中,mysqld文件部分设置如下:
${MYSQL}/bin/mysqld --user=mysql --datadir=${MYSQL}/data "$@" \
--language=${MYSQL}/share/mysql/english -O max_connections=500 -O wait_timeout=600 \
-O key_buffer=32M --max_allowed_packet=32M --port=${port} --socket=/tmp/mysql.sock &
其中 --max_allowed_packet=32M必须有前面的――符号。
关于max_allowed_packet一些资料:
许多MySQL程序有一些内部变量可以在运行时设置。程序变量的设置与带有值的其它长选项相同。
例如,mysql有一个max_allowed_packet变量,可以控制其通信缓冲区的最大长度。要想为mysql将max_allowed_packet变量的值设置为16MB,使用下面的任何一个命令:
shell> mysql --max_allowed_packet=16777216
shell> mysql --max_allowed_packet=16M
第1个命令以字节指定值。第2个命令以兆字节指定值。变量值可以有一个后缀K、M或者G(可以为大写或小写)来表示千字节、兆字节或者十亿字节的单位。
在选项文件中,变量设定值没有引导破折号:
[mysql]
max_allowed_packet=16777216
或:
[mysql]
max_allowed_packet=16M
如果你喜欢,变量名的下划线可以为破折号。
注:max_allowed_packet参数是在mysql4以后才有的,在mysql4以前版本,还没有这个参数
此外,还可以通过再/etc/增加my.cnf文件,在my.cnf中设置max_allowed_packet=16M,然后重启mysql也可.至于my.cnf的获得,可以从mysql主目录的support-files下通过更改模版得到.
分享到:
相关推荐
mysql5.7 修改max_allowed_packet方法
mysql设置max_allowed_packet_解决_MySQL_Error_2006
今天小编就为大家分享一篇关于Mysql的max_allowed_packet设定,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
主要介绍了mysql中max_allowed_packet参数的配置方法,以及查看max_allowed_packet参数当前值的方法,需要的朋友可以参考下
本篇文章是对修改mysql数据库的max_allowed_packet参数进行了详细的分析介绍,需要的朋友参考下
MySQL max_allowed_packet过小引起的问题报错如下com.mysql.jdbc.PacketTooBigException: Packet
今天在部署一个实验系统的时候,报错提示需要修改一下MySQL的配置文件,在修改的时候是有技巧的,大家可以参考下本文尝试操作下
在使用mysql的过程中,有个问题就是mysql的优化,mysql中longblob字段在5.5版本中默认的为1M。 想改变这个问题,需要注意几点: ... 原因:myslq默认配置最小的需要更改 :在mysql.ini中配置参数(max_allowed_pa
以下的文章主要是对MySQL性能影响关系紧密的五大配置...2、max_packet_allowed 最大数据包大小,通常等于你需要在一个大块中返回的最大数据集的大小,如果你在使用远程mysqldump,那它的值需要更大。 3、aborted_con
全国手机号码段归属地数据库,mysql 批量导入脚本。 若导入时报错,ERROR 2006 (HY000):MySQL server has gone away 。...如果值比较小,可以设置大一点:set global max_allowed_packet=1024*1024*16;
用下面方法解决(管理mysql用的是navicat).,设置以下几个参数的值后就正常了,以下语句也可以在mysql的控制台上执行 . 代码如下: show variables like ‘%timeout%’; show variables like ‘%packet%’; set global ...
我用到的数据库为,mysql数据库5.7版本的 首先自己准备好数据库表 ... You can change this value on the server by setting the max_allowed_packet’ variable. 出现上面的错误是因为数据库表的 max_allowe
在我们使用mysql导入大文件sql时可能会报MySQL server has gone away错误,该问题是max_allowed_packet配置的默认值设置太小,只需要相应调大该项的值之后再次导入便能成功。该项的作用是限制mysql服务端接收到的包...
MySQL性能分析,mysql max_allowed_packet,mysql show profiles 使用分析sql 性能,MySQL wait_timeout