【发布时间】:2013-08-01 18:45:35
【问题描述】:
让我解释一下……
当向informix db表中插入一条记录时,如果我为其中一列指定了一个值,无论该值是什么,它总是会抛出以下错误(这个小信息是黄金,花了我一段时间弄清楚)。该列是一个字符 (4)。我可以告诉的字段上没有唯一的键索引(使用松鼠)。我正在设置值的表中有许多其他列,但没有这个问题。
ERROR [HY000] [Informix][Informix ODBC Driver][Informix]ISAM error: duplicate value for a record with unique key.
或
Error: Could not insert new row - duplicate value in a UNIQUE INDEX column.
表架构一定有一些我遗漏的东西......谁能指出我正确的方向在哪里以及如何找到它失败的这个“假定”唯一键(最好使用松鼠)?我已经查看了“主键”选项卡和“索引”选项卡下的对象窗口,并且该列未在任一选项卡中列出。
我可以根据 squirrel 提供有关表架构的更多信息: 没有主键,有 10 个索引,其中没有一个与有问题的列相关联。 10 个索引中只有 1 个是唯一索引。
【问题讨论】:
-
您需要查看要插入的表上的索引。这些索引中的一个(或多个)指定一个列(或一组列),它可能只包含一次任何值。这种唯一索引的典型例子是表上的主键。我的第一个猜测是您插入的行具有表中已存在的 PK 值 - 这是此错误的最常见原因。
-
表上是否有触发器?也许错误来自触发器中发生的操作。
-
您能提供表格的详细信息吗?我不熟悉 Informix,但看起来 (stackoverflow.com/questions/4284187/…) 有一个“dbschema”命令行工具。
-
@HLGEM - 关于触发器的好点,我会看看我是否能弄清楚如何在informix中看到它们。
-
dbschema -d dbname -t tablename,假设 INFORMIX 环境变量(INFORMIXDIR、ONCONFIG、可能是 DB_LOCALE、INFORMIXSQLHOSTS)设置正确。