java - 违反主键但源或目标中没有重复项
问题描述
正在抛出的 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)
不知道该怎么办。这不是更早发生的,并且不确定我团队中的任何人做了什么导致这种情况。不要相信在这个表上创建了任何索引(我读过这可能会导致问题)
如果数据中没有真正的重复项,还有哪些其他问题会引发此错误?
解决方案
在 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;
推荐阅读
- php - 无法解析来自 Soap 服务的 Curl 响应(发布请愿书)
- python - BeautifullSoup 返回整个 DIV,但没有值
- android - 在真正的 android 设备上找不到 res/color/filename.xml 资源文件
- linux - 是否存在用于 stdin/stdout 的 Linux 应用程序,如果在读/写时出现问题,则通过环形缓冲区将最后一个数据输出到转储文件
- javascript - 在 ngFor 中使用 Angular 9 Slice Pipe
- angular - mat-list 显示多个项目
- javascript - vue反向数据绑定
- c++ - 数据竞争检测器 - OPENMP
- multithreading - Does TCB(thread control block) is created even if the process is composed of only on thread(the process itself)?
- javascript - Ngx Image Cropper 变换比例不平滑