Error updating database. Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry

最近在调试post方法时遇到SQLIntegrityConstraintViolationException: Duplicate entry xxx for key 这个错误,记录一下,方便后续查看
这个错误的意思是:违反唯一约束条件,也即该字段设置是唯一的,但是数据插入时,想要报错相同记录的数据。
错误信息如下:

{
    "timestamp": "2019-11-16 13:29:20",
    "status": 500,
    "error": "Internal Server Error",
    "message": "\r\n### Error updating database.  Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '2' for key 'sutra_items_lesson'\r\n### The error may involve cn.htz.chs.mapper.SutraItemsMapper.insert-Inline\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO sutra_items  ( sutra_id, title, description, original, audio_id, lyric_id, lesson, played_count, duration, hash, create_by, create_time, last_update_by, last_update_time )  VALUES  ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )\r\n### Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '2' for key 'sutra_items_lesson'\n; Duplicate entry '2' for key 'sutra_items_lesson'; nested exception is java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '2' for key 'sutra_items_lesson'",
    "path": "/put/sutraitems/item"
}

发现在建立数据库表字段时,lesson的字段设置了唯一索引,但是此时我们还是想让lesson支持重复的数据插入,可以有如下解决方法

  1. 使用可视化工具打开数据库,在sutra_items 表中查看索引,检查索引类型,选择Normal,保存后,问题解决
  2. 使用可视化工具打开数据库,在sutra_items 表中查看索引,选择对应报错的字段索引名称,直接删除改索引,新增限定唯一值的索引,比如新增title的唯一值索引,索引类型为Unique,索引方法默认为BTREE

上面都检查完毕,如果还是有问题,需要检查一下插入相关的代码,检查字段插入是否正确,保证插入的数据为唯一的

结论:
设置数据库字段时,要留心每个字段的属性,要根据每个字段的详细需求进行限定设置是否允许唯一性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章