Mysql:我收到此错误:重复条目''index_name'。

时间:2013-12-15 17:51:17

标签: mysql sql

Mysql:我收到此错误:重复条目''index_name'。

'url'列中的URI包含查询参数'?'。我想删除'?'的所有内容并使用'?'左侧的所有内容更新列。 URI如下所示:

http://www.mydomain.com/browse/team-sports/football/4125_4161_434036?povid=P1171-C1110.2784+1455.2776+1115.2956-L277
http://www.mydomain.com/browse/sports-outdoors/golf/4125_4152?povid=P1171-C1110.2784+1455.2776+1115.2956-L278
http://www.mydomain.com/browse/team-sports/volleyball/4125_4161_1041862/?povid=P1171-C1110.2784+1455.2776+1115.2956-L282
http://www.mydomain.com/browse/christmas-decor/holiday-lighting/2637_633379_1025279
http://www.mydomain.com/browse/christmas-decor/holiday-lighting/2637_633379_1025279/?povid=P1171-C1093.2766-L109

我尝试运行的查询是:

UPDATE mytable
SET url = SUBSTRING_INDEX(url, '?', 1) 

我得到的错误是:

Duplicate entry 'http://www.mydomain.com/browse/biography-memoirs/multi-cultural/3' for key 'index_name'

我尝试删除所有重复项并删除唯一索引无效。

非常感谢您的时间和建议!谢谢!

2 个答案:

答案 0 :(得分:3)

您在col index_name中有一个名为url的唯一键约束。 这就是发生此错误的原因。

解决它:删除密钥或修复更新。

答案 1 :(得分:1)

在更新唯一列时使用INSERT INORE INTO语法。

INSERT IGNORE INTO mytable (Url) Values(yourvalue) ON DUPLICATE KEY UPDATE Url=yourvalue;'

如果该值不存在,则会插入该值,如果存在则更新它。

否则创建一个相同的新表并从此表中插入

INSERT INTO newtable SELECT SUBSTRING(Url,'?',1) FROM mytable group by substring(Url,'?',1)

这应该注意不要插入重复项。