Je mist het punt over CHARACTER SET en COLLATION . EEN CHARACTER SET is een verzameling van verschillende karakters. Een COLLATION zegt of de tekens als gelijk moeten worden behandeld -- denk aan A en a -- verschillende karakters, maar behandeld voor ORDER BY en WHERE = , etc als hetzelfde.
mysql> SELECT 'K'='K' COLLATE utf8_unicode_ci;
+-----------------------------------+
| 'K'='K' COLLATE utf8_unicode_ci |
+-----------------------------------+
| 1 |
+-----------------------------------+
Dus in utf8_unicode_ci (of utf8mb4_unicode_ci) worden die twee tekens als "gelijk" beschouwd.
"Gelijk" is de test voor UNIQUE toetsen.
Stel de COLLATION in voor de kolom tot wat voor jou logisch is.
- utf8mb4_unicode_ci voor goede 'real life'-vergelijkingen, blijkbaar inclusief deze. K=k=Ķ=ķ
- utf8mb4_unicode_ci voor meer eenvoudige vergelijkingen. In het bijzonder komen geen 2-tekencombinaties overeen met 1-tekencoderingen. Het vouwen van de behuizing en het strippen van accenten komt voor. K=k=Ķ=ķ
- utf8mb4_bin controleert blindelings de bits. Geen hoesjes vouwen, enz. K k Ķ ķ zijn allemaal ongelijk.
utf8mb4_latvian_ci is een beetje anders:K=k maar niet gelijk aan Ķ=ķ . Er zijn andere gespecialiseerde sorteringen voor andere talen (meestal West-Europees).
Uw K heet "VOLLEDIGE LATIJNSE HOOFDLETTER K", dus het is redelijk dat het vergelijkbaar is met Latijnse K .