sql >> データベース >  >> RDS >> Mysql

mysqlutf8mb4_unicode_ciは一意のキーの衝突を引き起こします

    CHARACTER SETについてのポイントが欠けています およびCOLLATIONCHARACTER SET さまざまなキャラクターのコレクションです。 COLLATION 文字を同等に扱うかどうかを示します-Aと考えてください およびa -文字は異なりますが、ORDER BYで処理されます およびWHERE = 、などは同じです。

    mysql> SELECT 'K'='K' COLLATE utf8_unicode_ci;
    +-----------------------------------+
    | 'K'='K' COLLATE utf8_unicode_ci  |
    +-----------------------------------+
    |                                 1 |
    +-----------------------------------+
    

    したがって、utf8_unicode_ci(またはutf8mb4_unicode_ci)では、これら2つの文字は「等しい」と見なされます。

    「等しい」はUNIQUEのテストです キー。

    COLLATIONを設定します あなたにとって意味のあるものなら何でもコラムのために。

    • utf8mb4_unicode_ci 明らかにこれを含む、良い「実生活」の比較のために。 K =k=Ķ=ķ
    • utf8mb4_unicode_ci より単純な比較のために。特に、2文字の組み合わせが1文字のエンコーディングと一致することはありません。ケースの折り畳みとアクセントの剥ぎ取りは発生します。 K =k=Ķ=ķ
    • utf8mb4_bin 盲目的にビットをチェックします。ケースの折り畳みなどはありません。KkĶķはすべて等しくありません。

    utf8mb4_latvian_ciは少し異なります:K =kですが、Ķ=ķと等しくありません。他の言語(主に西ヨーロッパ)のための他の特殊な照合があります。

    あなたの は「FULLWIDTHLATINCAPITALLETTER K」と呼ばれるため、ラテン語のKと比較するのは非常に合理的です。 。




    1. PHPを使用してMySqlテーブルをインポート/復元する方法

    2. SQLServerでログインのデフォルト言語を変更する

    3. apachemysql-3306でパケットが故障しています

    4. 特定の数/オフセットから開始して自動インクリメントするにはどうすればよいですか?