AMQ- mysql后台数据库 Row size too large(>8126)

公司amq消息队列存数据用的 mysql数据库。5.6.32
近期应用方反应报错:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Row size too large(>8126).
Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.

这个能首先是去定位到哪个表,表名: ACTIVEMQ_MSGS
这个是存要发送的消息信息。里面有一列叫做 MSG, 可是开发已经把这里的类型改到longblob类型了。 而且longblob支持的大小已经远远比 BLOB 大多了。
所以不是表定义的问题,压根数据就没入库。

这时候就想到压缩。在/etc/my.cnf 里加入如下配置:

innnodb_file_per_table = 1
innodb_file_format_check = on
innodb_file_fomart = Barracuda

也可以只开启某个表的压缩:(这个没有实际测试过)

alter table XXX engine=InnoDB ROW_FORAMT=COMPRESSED;

结果依然报错,看来问题远远不是这些。网上很多的文章,就是要不改字段定义,要不就是如上开启压缩。 不过很多情况都不适用。于是翻Q出去查了查文章,建议加入如下配置到/etc/my.cnf:

innodb_log_file_size = 200M
innodb_log_buffer_size = 10m

这些参数可能你的配置里以前就有,我的也是,但是为什么报错,就是file_size 设置的过小,单个消息的信息过大导致的。 修改后重启数据库,问题解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东方-phantom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值