首页 > 解决方案 > 违反主键但源或目标中没有重复项

问题描述

正在抛出的 JDBC 批量插入语句...

Caused by: oracle.jdbc.OracleDatabaseException: ORA-00001: unique constraint (CHK_INCLRNG_U.DDA_TRIAL_BAL_STG_PK) violated

数据源没有任何重复。目标没有数据,所以不能有重复。我发现有趣的是,当我对表进行计数时,我得到了数据的整个记录​​数。所以它会在最后立即抛出这个。我的主键在我的创建表语句中定义如下......

CONSTRAINT DDA_TRIAL_BAL_STG_PK PRIMARY KEY (FIRM_BNK_ID,ACCT_NB,BAT_PROC_DT)

不知道该怎么办。这不是更早发生的,并且不确定我团队中的任何人做了什么导致这种情况。不要相信在这个表上创建了任何索引(我读过这可能会导致问题)

如果数据中没有真正的重复项,还有哪些其他问题会引发此错误?

标签: javasqloraclejdbc

解决方案


在 Oracle 中,您可以使用日志错误来捕获异常并查看哪一行违反了约束。

例如

create table t1(col1 number);

create unique index t_ix on t1(col1);

begin
 dbms_errlog.create_error_log('t1');
end;

 --in your insert statement you will have the following statement appended
 log errors reject limit unlimited;

-- The error will be captured in
select * from err$_t1;

推荐阅读