Ti manca il punto su CHARACTER SET
e COLLATION
. Un CHARACTER SET
è una raccolta di diversi personaggi. Una COLLATION
dice se trattare i caratteri come uguali -- pensa a A
e a
-- caratteri diversi, ma trattati per ORDER BY
e WHERE =
, ecc come lo stesso.
mysql> SELECT 'K'='K' COLLATE utf8_unicode_ci;
+-----------------------------------+
| 'K'='K' COLLATE utf8_unicode_ci |
+-----------------------------------+
| 1 |
+-----------------------------------+
Quindi in utf8_unicode_ci (o utf8mb4_unicode_ci), quei due caratteri sono considerati "uguali".
"Uguale" è il test per UNIQUE
chiavi.
Imposta il COLLATION
per la colonna a tutto ciò che ha senso per te.
- utf8mb4_unicode_ci per buoni confronti "nella vita reale", apparentemente incluso questo. K=k=Ķ=ķ
- utf8mb4_unicode_ci per confronti più semplici. In particolare nessuna combinazione di 2 caratteri corrisponde a codifiche a 1 carattere. Si verifica la piegatura della custodia e lo stripping dell'accento. K=k=Ķ=ķ
- utf8mb4_bin controlla ciecamente i bit. Nessuna piegatura del caso, ecc. K k Ķ ķ sono tutti disuguali.
utf8mb4_latvian_ci è leggermente diverso:K=k ma non uguale a Ķ=ķ . Esistono altre regole di confronto specializzate per altre lingue (principalmente dell'Europa occidentale).
Il tuo K
è chiamato "LETTERA MAIUSCOLA LATINA A LARGHEZZA COMPLETA K", quindi è abbastanza ragionevole che sia uguale al latino K
.