【问题标题】:Adding Composite Unique key and Duplicate Entry error添加复合唯一键和重复条目错误
【发布时间】:2016-07-14 17:21:06
【问题描述】:

在数据透视表中,我需要在两个大整数字段上添加复合唯一键。

ALTER TABLE table_name ADD UNIQUE KEY `uk_field1_field2` (field1, field2);

查询报错

Duplicate entry '24014-1435' for key 'uk_field1_field2'

这是表格中包含这些值的最后一条记录,我猜是“24014-1435”。我已经确认这种组合是独一无二的。如果我删除该特定记录,则错误将指向具有相同错误的倒数第二行。在我刷新所有记录之前,我无法添加唯一键。

我可以在表上添加唯一键约束而不刷新所有行吗?

编辑

表:表名
栏目:
id bigint(20) 联合国 AI PK
created_at 时间戳
updated_at 时间戳
应用时间戳
field1 bigint(20)
field2 bigint(20)
field3 bigint(20)
状态 varchar(64)

示例数据

'2214', '2016-01-05 13:51:03', '2016-01-05 13:51:03', '2016-01-05 13:51:02', '1972', '24', '1155', 'applied'
'2215', '2016-01-05 13:51:05', '2016-01-05 13:51:05', '2016-01-05 13:51:03', '1972', '31', '2137', 'applied'
'2216', '2016-01-05 13:51:06', '2016-01-05 13:51:06', '2016-01-05 13:51:05', '1972', '33', '2487', 'on-hold'
'345', '2016-01-05 08:50:07', '2016-01-05 08:50:07', '2016-01-05 08:50:07', '1717', '54', '4602', 'on-hold'

【问题讨论】:

  • 你有一些空值?
  • 你能提供一个小例子(表定义和数据)来重现你的问题吗?
  • @scaisEdge 这两个字段在这里都不能为空。
  • 您的示例适用于 sqlfiddle 和 MariaDB 10.0.19

标签: mysql sql mariadb


【解决方案1】:

密钥回显可能不是造成违规的密钥..

不保证值aaaaaaaaaaaaaaa-11111 在 留言

[23000][1062] 密钥“mykey”的重复条目“aaaaaaaaaaaaaaa-11111”

是实际导致违规的值。似乎是一个错误 MariaDB 和 evtl。在MyS中

看到这个https://dba.stackexchange.com/questions/106294/add-unique-index-fails-with-duplicate-entry-error-but-no-duplicates-found

您可以尝试添加一个非唯一索引,然后调查有问题的键..

尝试调查

select field1, field2 count(*) group by  field1, field2
having count(*) >1;

【讨论】:

  • 感谢您的帮助。 :)
  • 请向 mariadb.com 提交可重现的错误报告
  • 您和其他人似乎发现了 MariaDB 中的一个错误。如果你们中的一个人可以创建一个小测试用例进行演示,请提交错误报告。本论坛无法解决问题。 (而且我认为没有合理的解决方法。)
  • @RickJames 我只提出了一种解决与错误相关的问题的方法......我认为小测试的人是发布问题的用户.. Shuaid Nawaz
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-10
  • 1970-01-01
  • 2019-02-23
  • 1970-01-01
  • 2017-02-03
  • 1970-01-01
相关资源
最近更新 更多