「ニックネーム」という列があり、utf-8でエンコードされ、varchar(20)であるユーザーテーブルがあり、テーブルはInnoDBにあります。ニックネームが 'gunni' のレコードと、ニックネームが 'günni' のレコードが 2 つあります。この列に一意のインデックスを適用しようとすると、mysql で次のエラーが発生しました。
エラー 1062 (23000) 263 行目: キー 2 のエントリ 'gunni' が重複しています
「gunni」という名前のレコードが 1 つしかないデータを確認しました。「günni」レコードを別のレコードに変更してから、一意のインデックスを再度適用すると、すべて正常に動作します。
「günni」と「gunni」が重複するのはなぜですか? ここにそれらの 16 進値があります。これは mysql の hex() 関数で取得します。
グンニ -> 67756E6E69
グンニ -> 67C3BC6E6E69
それらは明らかに異なります。なぜmysqlはこれら2つを同じものとして扱うのですか? または、一意のインデックスについて知らないことがありますか? それとも、これは mysql のバグでしょうか?