li
  当前位置:主页 > 基础知识 > 文章内容
li
Mysql中max_allowed_packet参数设置一例
来源: www.ixdba.net  作者: Oracle+Linux专业技术门户    时间:2007-04-27   阅读:52  

今天研发人员在调试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变量,可以控制其通信缓冲区的最大长度。要想为mysqlmax_allowed_packet变量的值设置为16MB,使用下面的任何一个命令:

 

shell> mysql --max_allowed_packet=16777216

shell> mysql --max_allowed_packet=16M

 

1个命令以字节指定值。第2个命令以兆字节指定值。变量值可以有一个后缀KM或者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下通过更改模版得到.




  上一篇: java defunct产生的原因和解决办...   下一篇: 在sun solaris下编译安装apache+...
li
 §相关评论  
评论人:joshua2009-09-10
为什么不用set global ,可以不用重启
 热点文章

·RewriteRule重写规则的语法:A
·apache配置文件httpd.conf参数
·Apache的配置文件http.conf参数
·HTTP协议中POST、GET、HEAD等参
·XAMPP命令之LAMPP
·Linux中安装XAMPP(LAMPP)服务器
·网页禁止右键、禁止复制等代码
·java.lang.OutOfMemoryError:
·Mysql数据库在Linux系统常用命
·mysql问答:MySQL数据库连接过多
·MySQL数据库中Show命令的用法
li
 编辑推荐
·RewriteRule重写规则的语法:A
·apache配置文件httpd.conf参数
·Apache的配置文件http.conf参数
·HTTP协议中POST、GET、HEAD等参
·XAMPP命令之LAMPP
·Linux中安装XAMPP(LAMPP)服务器
·网页禁止右键、禁止复制等代码
·java.lang.OutOfMemoryError:
·Mysql数据库在Linux系统常用命
·mysql问答:MySQL数据库连接过多
·MySQL数据库中Show命令的用法
li
 相关篇章
·java defunct产生的原因和解决办...
·Jdk Installation of Solaris Pa...
·Unison使用参考大全
·Lvs调度策略研究
·Linux as4.2下Xfs文件系统的安装...
·Apache Prefork和Worker模式的性...
·神秘的DUAL
·drbd安装使用指南
·vmware三种网络连接
·如何设置MySQL同步(mysql双机热...
·在sun solaris下编译安装apache+...
·Sun solaris好站点推荐
·Rsh无密码登录设置
·Linux下修改网卡工作模式
·solaris系统管理员认证指南
·tomcat中的几点配置说明
·在Tomcat下禁止目录浏览功能
·mysql:如何让mysql支持中文gbk字...
·完美解决mysql数据库字符编码问题...
·命令总结:DB2常用的命令
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接