2016-09-29 7 views
-3

更新:多くの苦しい研究の後、私は問題が実際に何かを発見して、私は私の答えを以下に記します。MySQL:キーの重複エントリ(以前は「idxはどういう意味ですか?」)

残念ながら、私の会社に属しているためこの問題を引き起こしているクエリをコピーすることはできません。そのため、私の質問は非常に具体的なものにしておかなければなりません。

私はこのエラーを返しますINSERT INTO ... SELECTクエリを持っています。

Duplicate entry <gobbledygook> for key 'idx_<tablename>' 

終わりにテーブル名が正しい名前であるが、それはテーブルIのいずれかの部分ではありません、それ以前に、この奇妙なidx_接頭辞を持っています私は現在働いています。 idxとは何ですか?それはinformation_schemaと関係がありますか?

更新:明らかに、私は何かを明確にする必要があります:idxという名前の列はありません。

+0

これはインデックスです... – shmosel

+0

インデックスであり、おそらくユニークである必要があります。 – 3y3skill3r

+0

違反している固有のインデックスです。 –

答えて

1

"idx_"はインデックス名の共通接頭辞です。

多くの場合、そのインデックスで参照される列の値に重複する値を許可しないインデックスがあります。

1

私がこの問題を解決しようとしていたときに、数多くのウェブ調査が明らかにならなかったが、最終的にそれを理解した(JohnHの答えは私に役立つ)。

"idx"はMySQLによって作成されたものではなく、他の誰かがインデックスに付けた名前であることがわかりました。以前はキーではなかったインデックスの一意性制約に遭遇したことはありませんでした。そのため、そのエラーの原因がわかりませんでした。

このコマンドは、すべてのインデックスを示した:

SHOW INDEX FROM <tablename> 

をそして私は、一意でないが、このキーのために0に設定したことを確認することができました。

問題を修正するために、一意制約を追加することなく、単にインデックスを削除して再作成することができました。一意性制約を削除することは良い考えであるか否かは、

DROP INDEX idx_<tablename> ON <tablename>; 
ALTER TABLE <tablename> ADD INDEX idx_<tablename> (<comma-separated columns>); 

が見られることを残るが、それはこの質問の範囲を超えてもです。

関連する問題