ORA-00001: 违反唯一约束条件(SOLEX.SYS_C0012537) --解决方法

本文详细解析了在Oracle数据库中遇到的ORA-00001错误,即违反唯一约束条件的问题。通过具体案例,介绍了如何定位错误来源,包括查找对应表、确定主键自增序列,以及在数据库中调整序列值的方法。同时,讨论了当字段已设置可为空仍报错时的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、错误
Caused by: java.sql.BatchUpdateException:ORA-00001: 违反唯一约束条件 (SOLEX.SYS_C0012537)
2、分析
①通过SYS_C0012537找到对应的表
select a.constraint_name,a.constraint_type,b.column_name,b.table_name
from user_constraints a inner join user_cons_columns b on a.table_name=b.table_name
where a.constraint_name='SYS_C0012537' --引号里面的是主键的名称(SOLEX.SYS_C0012537)
②同hbm.xml文件找到主键的自增序列名称

SEQ_FEEPAY_COST_D

③到数据库序列sequences查找该序列名称:SEQ_FEEPAY_COST_D,然后修改下一个ID的值

    或者select SEQ_FEEPAY_COST_D.nextval as summaryId from dual c 一直增序列,排除掉重复的

3.若数据库中该字段已经设置可为空,但插入的时候还是出现这个错误,最后把Check constraints中该字段关了(disable)就可以了。

原文1.2:https://blog.youkuaiyun.com/beinlife/article/details/76180156 

原文3:https://blog.youkuaiyun.com/hellolib/article/details/13769831

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值