0

SQL クエリ:

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 は主キーで、unique(ID_Category,Keyword) )。これで私を助けることができますか?...

4

5 に答える 5

4

データベースには、値が「18」および「フリーメール」の行がすでにあります。一意の制約があるため、このような行を2つ持つことはできません。いくつかの選択肢があります:

  • 元の行を削除して、挿入を再試行してくださいDELETE FROM yourtable WHERE ID_Category = '18' AND Keyword = 'free mail'
  • 一意の制約を削除して、両方の行が存在できるようにします。
  • INSERT IGNOREエラーを無視するために使用します。
  • REPLACEの代わりに使用INSERTして、古い行を新しい行に置き換えます。
  • クライアントINSERT側にエラーが通知されることを知ってみてください。
于 2011-04-25T05:17:59.820 に答える
2

それは、挿入しているデータが一意の制約を破っていることを意味します。エラー メッセージから、いくつかのデータがペア (18、「フリー メール」) で既に存在していると思います。

行番号はキーに対応していないため、目安ではありません。

于 2011-04-25T05:27:55.097 に答える
1

ID_categoryキーは一意として宣言されているため、同じ値を持つ2つのエントリを持つことはできません。

于 2011-04-25T05:18:44.643 に答える
1

IDフィールドが本当に主キーである場合、ほとんどの場合、自動インクリメントされます(または自動インクリメントされる必要があります)。したがって、そのフィールドはINSERTクエリから除外します。

于 2011-04-25T05:19:58.570 に答える
1

行番号ではなく、MySQL エラー番号 1062 です。エラーは重複エントリを意味します。ID と ID_Category にそれぞれ NULL と '18' を 2 回挿入しているため、2 回目にこのエラーがスローされます。ID_Categoryインデックスの名前である可能性が非常に高いです。あなたはすることができます

show index from website_categorization.category_keyword

インデックス名を表示します。

于 2011-04-25T05:16:57.207 に答える