`
wangdei
  • 浏览: 374426 次
社区版块
存档分类
最新评论

Mysql中max_allowed_packet参数设置一例

阅读更多

今天研发人员在调试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下通过更改模版得到.

分享到:
评论

相关推荐

    还原大备份mysql文件失败的解决方法分享

    对于`max_allowed_packet`,你还可以在MySQL配置文件(通常是`my.cnf`或`my.ini`)中永久性地增加其默认值,这样每次服务器启动时都会自动应用这个设置。例如: ```ini [mysqld] max_allowed_packet = 100M ``` ...

    mysql安装.docx

    - 在配置文件中设置的参数可以根据实际需求进行调整,例如最大连接数(`max_connections`)、查询缓存大小(`query_cache_size`)等。 - 初始化过程中生成的临时密码非常重要,用于首次登录MySQL时使用。 - 配置文件中的...

    mysql安装步骤文档

    在整个过程中,我们从检查和清理已有MySQL安装开始,一步步完成了MySQL的下载、解压、用户及用户组创建、文件所有权设置、配置文件编辑、安装与初始化、服务启动、环境变量设置、获取初始密码、远程访问权限设置、...

    Mysql LONGTEXT 类型存储大文件(二进制也可以) (修改+调试+整理)

    在本例中,`max_allowed_packet`被设置为1024MB,即1GB,以确保能够处理较大的文件。 接下来,代码展示了如何将文件内容插入到LONGTEXT字段中。代码使用了MySQL C API进行连接、查询和数据传输。程序首先打开并读取...

    Web服务器使用.docx

    - `max_allowed_packet`:允许的最大数据包大小,对处理大查询很有用。 - `table_open_cache`:打开的表缓存数量,影响数据库性能。 总的来说,Web服务器的使用涉及多个层面,包括数据库管理、Web服务器配置、安全...

    Linux下mysql异地自动备份的方法

    这里设置了`max_allowed_packet`参数,允许大文件的导出,防止因文件过大而中断。 4. **执行权限**: 为`mysql_backup.sh` 脚本赋予执行权限,使用 `chmod +x ./mysql_backup.sh` 命令。 5. **运行备份脚本**: ...

    MySQL性能优化之路—修改配置文件my.cnf

    - `max_allowed_packet`:设置为4M,限制单个数据包大小。 - `thread_stack`:设置为256K,每个线程的栈大小。 - `table_cache`:设定为128K,缓存打开的表的数量。 - `sort_buffer_size`:设置为6M,每个连接的排序...

    MySQL配置文件无法修改的解决方法(Win10)

    以max_allowed_packet为例,其应该被放置在[mysqld]这个段中。如果系统中已存在这个参数,只需修改其值即可。如果是新增加的配置项,确保不要遗漏配置段,并且正确地放置在文件中。 如果需要彻底修改配置文件,可能...

    MySQL数据延迟跳动的问题解决

    4. 调整复制配置:例如,增加`slave_net_timeout`以允许更长的网络延迟,或者调整`max_allowed_packet`以适应大事务。 5. 监控和调优:定期监控系统性能,通过`SHOW STATUS`和`SHOW VARIABLES`获取相关信息,针对性...

    深入分析MySQL Sending data查询慢问题

    除此之外,还可以考虑其他优化策略,如调整数据库参数,如`max_allowed_packet`(用于控制单次传输的最大数据量),或者使用分区表来优化大数据量的处理。在某些情况下,使用缓存(如Redis)或数据预处理也可能有所...

Global site tag (gtag.js) - Google Analytics