添加复合唯一键和重复输入错误

时间:2016-03-27 08:56:32

标签: mysql sql mariadb

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

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

查询报告错误

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

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

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

修改

表:table_name
列:
id bigint(20)UN AI PK
created_at timestamp
updated_at时间戳
applied_at时间戳
field1 bigint(20)
field2 bigint(20)
field3 bigint(20)
status 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'

1 个答案:

答案 0 :(得分:2)

密钥回应可能不是违规行为的主要责任。

  

无法保证价值aaaaaaaaaaaaaaa-11111在   消息

     

[23000] [1062]重复录入' aaaaaaaaaaaaaaa-11111'关键词' mykey'

     

是实际导致违规的值。似乎是一个错误   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;