添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

“携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第20天, 点击查看活动详情

org.springframework.dao.DataIntegrityViolationException:
2022/8/19 16:25:16### Error updating database.  Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'rule' at row 102
2022/8/19 16:25:16### The error may involve defaultParameterMap
2022/8/19 16:25:16### The error occurred while setting parameters
2022/8/19 16:25:16### SQL: update task SET rule = ?,where id = ? 
2022/8/19 16:25:16### Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'rule' at row 102
2022/8/19 16:25:16; Data truncation: Data too long for column 'rule' at row 102; nested exception is com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'rule' at row 102
2022/8/19 16:25:16	at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:104) ~[spring-jdbc-5.1.18.RELEASE.jar!/:5.1.18.RELEASE]
2022/8/19 16:25:16	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72) ~[spring-jdbc-5.1.18.RELEASE.jar!/:5.1.18.RELEASE]
2022/8/19 16:25:16	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) ~[spring-jdbc-5.1.18.RELEASE.jar!/:5.1.18.RELEASE]
2022/8/19 16:25:16	... 63 more
Data too long for column 'rule' at row 102; nested exception is com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'rule' at row 102

从抛出的异常中不难看出,报错是因为往rule字段set的值超过了规定长度。

MySQL中有3种text类型:TEXT、MEDIUMTEXT、LONGTEXT。

text的长度

  • TEXT:65,535 bytes ~64kb
  • MEDIUMTEXT: 16,777,215 bytes ~16Mb
  • LONGTEXT: 4,294,967,295 bytes ~4Gb
  • spring的DAO层异常如下表:

    异常何时抛出
    CleanupFailureDataAccessException一项操作成功地执行,但在释放数据库资源时发生异常(例如,关闭一个Connection)
    DataAccessResourceFailureException数据访问资源彻底失败,例如不能连接数据库
    DataIntegrityViolationExceptionInsert或Update数据时违反了完整性,例如违反了惟一性限制
    DataRetrievalFailureException某些数据不能被检测到,例如不能通过关键字找到一条记录
    DeadlockLoserDataAccessException当前的操作因为死锁而失败
    IncorrectUpdateSemanticsDataAccessExceptionUpdate时发生某些没有预料到的情况,例如更改超过预期的记录数。当这个异常被抛出时,执行着的事务不会被回滚
    InvalidDataAccessApiusageException一个数据访问的JAVA API没有正确使用,例如必须在执行前编译好的查询编译失败了
    invalidDataAccessResourceUsageException错误使用数据访问资源,例如用错误的SQL语法访问关系型数据库
    OptimisticLockingFailureException乐观锁的失败。这将由ORM工具或用户的DAO实现抛出
    TypemismatchDataAccessExceptionJava类型和数据类型不匹配,例如试图把String类型插入到数据库的数值型字段中
    UncategorizedDataAccessException有错误发生,但无法归类到某一更为具体的异常中