Anda melewatkan poin tentang CHARACTER SET dan COLLATION . CHARACTER SET adalah kumpulan karakter yang berbeda. COLLATION mengatakan apakah akan memperlakukan karakter sebagai sama -- pikirkan A dan a -- karakter yang berbeda, tetapi diperlakukan untuk ORDER BY dan WHERE = , dll sebagai sama.
mysql> SELECT 'K'='K' COLLATE utf8_unicode_ci;
+-----------------------------------+
| 'K'='K' COLLATE utf8_unicode_ci |
+-----------------------------------+
| 1 |
+-----------------------------------+
Jadi di utf8_unicode_ci (atau utf8mb4_unicode_ci), kedua karakter tersebut dianggap "sama".
"Sama" adalah ujian untuk UNIQUE kunci.
Setel COLLATION untuk kolom apa pun yang masuk akal bagi Anda.
- utf8mb4_unicode_ci untuk perbandingan 'kehidupan nyata' yang bagus, tampaknya termasuk yang ini. K=k=Ķ=ķ
- utf8mb4_unicode_ci untuk perbandingan yang lebih sederhana. Khususnya tidak ada kombinasi 2 karakter yang cocok dengan pengkodean 1 karakter. Pelipatan case dan aksen stripping memang terjadi. K=k=Ķ=ķ
- utf8mb4_bin membabi buta memeriksa bit. Tidak ada case folding, dll. K k Ķ semuanya tidak sama.
utf8mb4_latvian_ci sedikit berbeda:K=k tetapi tidak sama dengan =ķ . Ada susunan khusus lainnya untuk bahasa lain (kebanyakan Eropa Barat).
K . Anda disebut "FULLWIDTH LATIN CAPITAL LETTER K", sehingga cukup beralasan jika dibandingkan dengan K Latin .