首页 > 数据库 > 数据库开发技术 > 曾经遇到的一次数据不一致的问题
问题描述:
将数据库A的表导入到库B中,出现下面的错误:
IMP-00017: following statement failed with ORACLE error 1452:
"CREATE UNIQUE INDEX "PRIMARY_ULD" ON "UINV_ULD_INVENTORY" ("UINV_ULD_TYPE" "
", "UINV_ULD_SERIAL" , "UINV_ULD_OWNER" ) PCTFREE 10 INITRANS 24 MAXTRANS 2"
"55 STORAGE(INITIAL 131072 FREELISTS 24 FREELIST GROUPS 1 BUFFER_POOL DEFAUL"
"T) TABLESPACE "DATA" LOGGING"
IMP-00003: ORACLE error 1452 encountered
ORA-01452: cannot CREATE UNIQUE INDEX; duplicate keys found
说是唯一索引不能建,有重复键值
在A库上执行查询如下:
select UINV_ULD_TYPE||' '||UINV_ULD_SERIAL||' '||UINV_ULD_OWNER,count(*) from UINV_ULD_INVENTORY
group by UINV_ULD_TYPE||' '||UINV_ULD_SERIAL||' '||UINV_ULD_OWNER having count(*)>1
没有返回值
在B库上执行同样的查询,有返回值
PMC 07445 KL 2
于是在A库上执行查询:
select * from UINV_ULD_INVENTORY where UINV_ULD_TYPE||' '||UINV_ULD_SERIAL||' '||UINV_ULD_OWNER='PMC 07445 KL'
出来的值有两条:
30000116066377 PMC 07445 KL 0
30000116316113 PMC 07445 KL 0
同样在B库上执行同样的查询,返回值也是这两条
为什么?
实际上A库上执行下面语句的时候走了那个B库上没有建成而A库上已经有的索引,而A库的该索引是有问题的:
select UINV_ULD_TYPE||' '||UINV_ULD_SERIAL||' '||UINV_ULD_OWNER,count(*) from UINV_ULD_INVENTORY
group by UINV_ULD_TYPE||' '||UINV_ULD_SERIAL||' '||UINV_ULD_OWNER having count(*)>1;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/85922/viewspace-987001/ ,如需转载,请注明出处,否则将追究法律责任。