oracle数据库插入数据的时候主键ID冲突问题

Blade 未结 1 493
和
剑圣 2022-03-04 11:17

一、该问题的重现步骤是什么?

  1.  后台定时任务插入数据时,代码如下图:

    image.png

  2. 通过定时任务往数据库插入数据,自增长I D会出现两条一摸一样的数据,导致报违反唯一约束性错误,报错信息如下:

    image.png


3、去掉主键约束后发现,是两条不一样的数据共用了一个自增长的ID,如下图:

image.png 

 





二、解析MQ生产的数据时,解析MQ生产的数据往本地数据库添加时也会出现两条不一样的数据共用一个ID的情况,代码如下:

image.png

1、 单线程解析数据时,数据总量70590条,其中有5142条数据出现重复ID情况,并且ID重复的数据,其他字段值均不一样。

image.png

image.png

2、多线程解析数据时,数据总量70590条,其中有3950条数据出现重复ID情况,并且ID重复的数据,其他字段值均不一样。

image.png

image.png

image.png



二、你期待的结果是什么?实际看到的又是什么?

数据库为oracle,版本为oracle 10g,现在发现通过后台定时任务或者是解析MQ生产的数据,在往本地数据库(Oracle)插入数据时都会出现两个ID一样的情况,但实际上是两条不一样的数据,并且同样的ID最多只会出现两次。


三、你正在使用的是什么产品,什么版本?在什么操作系统上?

BladeXAvue联合版,在linux操作系统上部署


1条回答
  • reqChem.getId()有可能两次拿到是一样的,具体你要debug调试一下。

    0 讨论(1)
提交回复