mysql5的bolb字段,安装时默认是1M,会提示报错。

【问题情况】

 文件上传后要存在数据库里面,用blob类型,在oracle里面是运行正常的。  移植到mysql5的时候,上传报错,经过百度搜索,找到问题原因。mysql5的bolb字段,安装时默认是1M。


【异常提示】

Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (5856352 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.
at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3868)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2551)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2818)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2157)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2460)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2377)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2361)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:133)
... 67 more


【问题原因及解决办法】

MySQL的一个系统参数:max_allowed_packet,其默认值为1048576(1M),
查询:show VARIABLES like '%max_allowed_packet%';

修改此变量的值:
MySQL安装目录下的my.ini文件中的[mysqld]段中的"max_allowed_packet = 1M",(注意:有些mysql.ini文件中会没有这一行的)

找到[mysqld], 在这一行下面新增一行(本身有这行就修改)。改为31M。


max_allowed_packet = 31M

重起MySQL服务。
现在可以load大于1M的文件了


【顺便说一下mysql中blob的区别】

MySQL有四种BLOB类型:
TINYBLOB: 仅255个字符
BLOB: 最大限制到65K字节
MEDIUMBLOB: 限制到16M字节
LONGBLOB: 可达4GB

----------------------------------------

【有参考文章】http://hi.baidu.com/liyanqin2288/item/f0eb2b36b9fd5ecd2e8ec259

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值