Fatal Error: Unexpected BLOG

主に自分用の備忘録として

【MySQL】重複していないはずなのにDuplicate Entry エラー

INSERT文で複数行をINSERTする際、「Duplicate entry for primary key」で怒られた。

カラムAとカラムBの複合主キーを設定していて、こんな感じのINSERT文を発行した。

INSERT INTO `table` (columnA, columnB) VALUES ('000001', '000001a'),('000001', '000001b');

ぱっと見たところ、重複はしないはず。

データ型を変更してみても同じ。

 

結論

問題はインデックスの「長さ」でした。

複合キーの一つ目は長さを「6」に設定していて、二つ目の長さも「6」になってた。

ので、キーとして利用されるデータは一つ目のカラムも二つ目のカラムも長さ「6」まで。

なので上記のSQLだとどちらも「000001-000001」で重複。

インデックスの設定で二つ目のカラムの長さを適切な値に設定して解決。

 

ふたを開けてみればあっけなかった。。