2011-04-25 90 views
0

SQL查詢:MySQL的插入錯誤1062

INSERT INTO `website_categorization`.`category_keyword` (
`ID` , 
`ID_Category` , 
`Keyword` , 
`Score`) 
VALUES (
NULL , '18', 'free mail', '' 
), (
NULL , '18', 'web email free', '' 
) 

MySQL表示:

#1062 - Duplicate entry '18-free mail' for key 'ID_Category' 

它顯示了這個重複條目的錯誤即使是在排沒有條目沒有1062(ID是主鍵,和唯一的(ID_Category,Keyword))。 你能幫我嗎?...

回答

3

您的數據庫中已經有一行數值爲'18'和'免費郵件'。由於唯一約束,您不能擁有兩個這樣的行。您有一些選擇:

  • 刪除原始行並嘗試再次插入:DELETE FROM yourtable WHERE ID_Category = '18' AND Keyword = 'free mail'
  • 刪除唯一約束以允許兩行都存在。
  • 使用INSERT IGNORE忽略錯誤。
  • 使用REPLACE而不是INSERT將舊行替換爲新行。
  • 嘗試INSERT知道客戶端將收到錯誤警報。
1

這是MySQL錯誤號1062,而不是行號。錯誤意味着重複輸入。您分別在ID和ID_Category中插入NULL和'18'兩次,所以它會在您第二次執行時拋出此錯誤。 ID_Category很可能是您的索引名稱。你可以做一個

show index from website_categorization.category_keyword

看到索引名。

1

您的ID_category鍵被聲明爲唯一的,因此您不能有兩個具有相同值的條目。

1

如果您的ID字段確實是主鍵,則它很可能(或應該)自動遞增。因此,請將該字段留出INSERT查詢。

2

嗯,這意味着你插入的數據會破壞唯一的約束。從錯誤messasge我會說一些數據已經存在與對(18,'免費郵件') - 你說這是限制爲獨特的。

行號不是一個指示,因爲它不對應於密鑰。