当往数据库中插入语句时,连接池抛出了“com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'xxx' at row xxx”的异常。
从提示的信息表面上来看,说是什么数据对于列“xxx”过长。于是修改了数据库,如mysql中text类型是可变长度的字符串,最多65535个字符,把字段类型改成MEDIUMTEXT(最多存放16777215个字符)或者LONGTEXT(最多存放4294967295个字符)。
结果并不成功解决,那么肯定还存在新的问题。
将目光转到编码问题上,编码分代码层和数据库本身,代码层使用了utf-8,那基本上是标准的。通过发现,数据库里的出异常的列编码并不是utf-8的,也就是说存在里外编码格式不统一的情况。
好了,问题解决了,总结下:
1、尝试调整字段的类型,如文章描述的那样,改长或改为更大的类型;
2、尝试审计异常列所在的表,看编码的格式可与代码层统一。