相关推荐recommended
代码插入数据库数据时报错:Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long
作者:mmseoamin日期:2024-04-29

一、报错信息

### Error updating database.  Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'type' at row 18 ### The error may exist in file [C:\Users\Administrator\Desktop\DingTalk_yield_push\rdps\rdps-report\target\classes\mapper\report\StubfileMapper.xml] ### The error may involve com.rdps.report.mapper.StubfileMapper.batchInsert-Inline ### The error occurred while setting parameters

二、原因分析

从日志可以看到关键字:Data too long for column ‘source_table’,意思就是插入的数据超出了建表时的最大长度,使用 navicat 打开表设计,修改表中字段最大长度时又发现报错为:代码插入数据库数据时报错:Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long,第1张

因为使用的数据库为 MySQL,表的引擎是 InnoDB 表类型,会出现锁等待的情况,在出现锁等待时,会根据参数 innodb_lock_wait_timeout(默认50s)的配置,判断是否需要进行 timeout 的操作,如果等待时间超过了设置的时间就会报错。此时才想到自己代码还处于debug状态,因此造成了锁等待情况,接着停止代码运行后就可以修改表中字段长度了~