2013-12-15 33 views
1

Mysql:我收到此錯誤:複製條目''index_name'。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

是否將url列作爲唯一分隔。似乎你將一個識別條目添加到唯一定義的列中。 – Diversity

+0

提供完整的更新查詢 – Aris

回答

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)

這應該是沒有重複插入護理插入。

3

您在col url中有一個唯一的密鑰約束,稱爲index_name。 這就是這個錯誤發生的原因。

解決它:要麼刪除密鑰或修復您的更新。