首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Firebird2.5错误:“唯一索引中有重复的值”,没有重复的数据

Firebird2.5错误:“唯一索引中有重复的值”,没有重复的数据
EN

Stack Overflow用户
提问于 2014-02-19 20:21:59
回答 1查看 5.5K关注 0票数 3

您好,感谢您的阅读,可能对我也有帮助

对我的问题的简要说明:

我正在使用IBExpert将数据从一个火鸟数据库复制到另一个数据库(称为V14)。这些表的名称相同,并且具有相同的结构。为了解释起见,我将把包含旧数据库A中的数据的表称为B,而我想要将数据插入其中的表应称为B。

因此,唯一要做的就是从表A中取出所有数据并将它们插入到表B中。这样做的一小段代码是:

代码语言:javascript
复制
INSERT into [V14].BSMZ SELECT * FROM BSMZ

执行此操作后,我收到错误消息(在传输了一些行之后):

无效的insert或update值:对象列受到约束-任何两个表行都不能有重复的列值。尝试在唯一索引"UI_BSMZ“中存储重复值(对活动事务可见)

此唯一索引包含2个数据列,适用于表B和表A。

有多个行导致此问题,但也会根据需要传输多个行。我已经证实,不能插入到表B中的行在其唯一键列中具有值,而这些值在表B中并不存在。

(为了测试的目的,我确实从表B中删除了约束,但我仍然得到相同的错误消息,这让我更加困惑)

我真的不确定是什么导致了这个问题,并希望得到一些提示。

EN

回答 1

Stack Overflow用户

发布于 2014-09-12 14:45:07

你得到了确切的错误信息唯一索引"UI_BSMZ“查找唯一约束的声明-它不是关于从B到A的外键这是表中某些字段的约束

在源数据库中,对此UK UI_BSMZ中字段运行查询

代码语言:javascript
复制
SELECT UK_FIELD_1, UK_FIELD_2, .. FROM TABLE_NAME GROUP BY UK_FIELD_1, UK_FIELD_2, .. HAVING     COUNT(*)>1 PLAN (TABLE_NAME NATURAL)

如果此查询返回一些行-源数据库中的索引已损坏-或不存在

要修复索引(在删除重复项之后)-请运行以下命令:

代码语言:javascript
复制
Alter Index INDEX_NAME ACTIVE;

这将重建您的索引

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21880352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档