诡异的 com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column “dat

关键字

mysql longtext Data too long for column json

先给大家推荐一个好玩的网站MyChatGPT(免梯子,国内直接用,不需要OpenAI账号):https://chat.icoding.ink/

异常出现场景

  1. 版本mysql8, 使用了mysql的json字段
  2. 尝试将字段类型改为longtext
  3. 即使改为longtext(最大支持四亿多字符)依然顽强的报data too long…

报文如下:

com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column "data"

有帮助的尝试

尝试就该字段名datadata_json, 问题解决。

后记

网上充斥着过多的垃圾信息,给问题排查带来了很多困扰,被带偏了很多次,因此记录一下。

这个异常出现的相当诡异,首先数据库设置是没问题的,并且尝试手动执行sql可以正常插入。但是在项目中会抛出该异常。
起初以为是seata引起的, 建立了一个demo项目跑起来依然报错。排除seata问题。

坚信字段类型没问题,排除所有不可能后,问题聚焦在字段本身的命名data上,
尝试修改命名后问题解决。因此断定data在mysql中是一个特殊的保留字段。

由上可以得出两种解决方案:

  1. 修改字段命名
  2. sql语句中,字段名使用 ` 包裹。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值