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

Posted Only丿阿海

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了诡异的 com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column “dat相关的知识,希望对你有一定的参考价值。

关键字

mysql longtext Data too long for column json

异常出现场景

  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语句中,字段名使用 ` 包裹。

以上是关于诡异的 com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column “dat的主要内容,如果未能解决你的问题,请参考以下文章

诡异的尺寸

并发下诡异的HashMap

关于Asp.net mvc的诡异问题

lua "诡异"的return用法

史上最诡异的数学题

诡异的事件,记录一下