「e」と「é」を区別できる文字セットであるUTF-8照合データベースを使用しています...残念ながら、MySQLWorkbenchおよび/またはJDBCから次の2つの挿入を直接発行しています
INSERT INTO `ucap_i10_13_02_27$12_48_41`.`attributes` (`attribute`, `intvalue`) VALUES ('brown-séquard', 1);
INSERT INTO `mytable`.`attributes` (`attribute`, `intvalue`) VALUES ('brown-sequard', 1);
'attribute'列がテーブルの唯一の主キーである場合、結果は...
Error Code: 1062 : Duplicate entry 'brown-sequard' for key 'PRIMARY'
さらに、最初のアクセント付き挿入を発行した後、次のようなアクセントなしバージョンでクエリを実行します。
select * from `mytable`.`attributes` where attribute='brown-sequard';
アクセントバージョンのブラウンセカールを返します。
MySQLが主キーの制約に関してアクセント付き文字とアクセントなし文字の違いを認識できるようにするにはどうすればよいですか?
更新1
私はこのStackOverflowの投稿にある解決策を試しました:
つまり、パラメータを追加しました
&useUnicode=true&characterEncoding=UTF-8
JDBC接続文字列へ。これは役に立ちませんでした:-(
更新2
MySQLWorkbenchではなくコマンドラインmysqlクライアントからアクセント付きの「e」'(brown-séquard')を指定して挿入コマンドを実行すると、次の興味深いエラーコードが表示されます。
ERROR 1366 (HY000): Incorrect string value: '\x82quard' for column 'attribute' at row 1
しかし、データベース接続自体ではなく、Windowsコマンドシェル/CLIクライアントがアクセントエンコーディングを窒息させることに関係しているのではないかと思います。