Te estás perdiendo el punto sobre CHARACTER SET
y COLLATION
. UN CHARACTER SET
es una colección de diferentes personajes. UNA COLLATION
dice si tratar a los personajes como iguales -- piensa en A
y a
-- caracteres diferentes, pero tratados para ORDER BY
y WHERE =
, etc. como si fueran lo mismo.
mysql> SELECT 'K'='K' COLLATE utf8_unicode_ci;
+-----------------------------------+
| 'K'='K' COLLATE utf8_unicode_ci |
+-----------------------------------+
| 1 |
+-----------------------------------+
Entonces, en utf8_unicode_ci (o utf8mb4_unicode_ci), esos dos caracteres se consideran "iguales".
"Igual" es la prueba para UNIQUE
llaves.
Establecer la COLLATION
para la columna a lo que tenga sentido para usted.
- utf8mb4_unicode_ci para buenas comparaciones de la 'vida real', aparentemente incluyendo esta. K=k=Ķ=ķ
- utf8mb4_unicode_ci para comparaciones más simples. En particular, ninguna combinación de 2 caracteres coincide con codificaciones de 1 carácter. Se produce el plegado de la caja y la eliminación de acentos. K=k=Ķ=ķ
- utf8mb4_bin comprueba ciegamente los bits. Sin plegado de caja, etc. K k Ķ ķ son todos desiguales.
utf8mb4_latvian_ci es un poco diferente:K=k pero no igual a Ķ=ķ . Hay otras colaciones especializadas para otros idiomas (principalmente de Europa occidental).
Tu K
se llama "LETRA K MAYÚSCULA LATINA DE ANCHO COMPLETO", por lo que es bastante razonable que se compare igual a la K
latina .