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'
我尝试删除所有重复项并删除唯一索引无效。
非常感谢您的时间和建议!谢谢!
答案 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)
这应该注意不要插入重复项。