gpt4 book ai didi

sql - Firebird2.5错误: "duplicate value in unique index" without duplicate data

转载 作者:搜寻专家 更新时间:2023-10-30 19:51:03 28 4
gpt4 key购买 nike

您好,感谢阅读并可能对我有所帮助

我的问题的简要说明:

我正在将数据从一个 Firebird 数据库复制到另一个(称为 V14),并且我正在使用 IBExpert 来执行此操作。这些表的名称相同并且具有相同的结构。为了便于解释,我将把旧数据库中包含数据的表称为 A,将要插入数据的表称为 B。

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

INSERT into [V14].BSMZ SELECT * FROM BSMZ

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

无效的插入或更新值:对象列受到约束 - 没有 2 个表行可以具有重复的列值。尝试在唯一索引“UI_BSMZ”中存储重复值(对事件事务可见)

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

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

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

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

最佳答案

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

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

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)

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

修复索引(删除重复项后)- 运行此命令:

Alter Index INDEX_NAME ACTIVE;

这会重建你的索引

关于sql - Firebird2.5错误: "duplicate value in unique index" without duplicate data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21880352/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com