【Oracle异常】ORA-02290: check constraint (CUSTOMER.SYS_C00180123) violated

异常的起因:

数据库设计往往和业务逻辑相关,所以设计的数据库表有一些字段添加了非空校验(Not Null);后来发现之前非空字段中部分字段允许为空(Null),所以我就直接通过Navicat工具操作,取消了非空标记。

运行程序,出现SQL异常:

ORA-02290: check constraint (CUSTOMER.SYS_C00180123) violated

分析:

根据异常信息和网上大神的分析发现,是数据库表中的部分字段违反了检查约束,但SQL异常并未指出具体字段,所以首先要知道违反检查约束的字段有哪些,

查询违反检查约束的字段:

SELECT * FROM user_constraints WHERE table_name='TABLE_NAME';

注:SQL中WHERE条件中的TABLE_NAME就是你需要查询的表名称

以下是查询出报错表的所有检查约束:
在这里插入图片描述
现在知道了所有检查约束,注意观察CONSTRAINT_NAME字段;也知道SQL异常中指出的报错信息:

ORA-02290: check constraint (CUSTOMER.SYS_C00180123) violated

说明是CUSTOMER.SYS_C00180123违反了检查约束,明确了问题,就根据报错的值删除对应的记录

ALTER TABLE TABLE_NAME DROP CONSTRAINT SYS_C00180123;

执行完即可继续运行程序(上面截图是我在执行之后截取的,所以没有CUSTOMER.SYS_C00180123值)。

参考链接:
https://www.cnblogs.com/ladyM/p/8580072.html
https://www.cnblogs.com/chenglc/p/9626165.html

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这段报错是由于执行数据库更新操作时出现了唯一约束冲突引起的。具体报错信息如下: ``` Error updating database. Cause: java.sql.SQLIntegrityConstraintViolationException: ORA-00001: unique constraint (TPMDATA.EMS_M_DOC_HEAD_PK) violated The error may exist in URL [jar:file:/home/itks_mgt/TPM/tpm.jar!/BOOT-INF/classes!/mybatis/business/EmsMDocHeadMapper.xml] The error may involve com.ruoyi.project.business.mapper.EmsMDocHeadMapper.insertEmsMDocHead-Inline The error occurred while setting parameters SQL: insert into tpmdata.ems_m_doc_head ( mt_no, plant_id, start_date, end_date, begin_time, begin_by, status, doc_type, planner_group, schedule_id ) values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) Cause: java.sql.SQLIntegrityConstraintViolationException: ORA-00001: unique constraint (TPMDATA.EMS_M_DOC_HEAD_PK) violated ORA-00001: unique constraint (TPMDATA.EMS_M_DOC_HEAD_PK) violated nested exception is java.sql.SQLIntegrityConstraintViolationException: ORA-00001: unique constraint (TPMDATA.EMS_M_DOC_HEAD_PK) violated ``` 其中,报错的原因是由于 `java.sql.SQLIntegrityConstraintViolationException` 引发的,该异常表示违反了数据库的完整性约束。具体的约束名称是 `TPMDATA.EMS_M_DOC_HEAD_PK`,这是一个唯一约束(unique constraint)。报错的SQL语句是一个插入语句,向表 `tpmdata.ems_m_doc_head` 插入数据,但插入的数据违反了该唯一约束。 总结起来,报错的原因是在插入数据时,违反了表 `tpmdata.ems_m_doc_head` 的主键约束,该主键约束要求插入的数据在某个字段上必须是唯一的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值