MySQL chce konwertować ciągi znaków podczas wykonywania INSERT
i SELECT
. Konwersja odbywa się między tym, co deklarujesz klientowi mieć i co kolumna jest zadeklarowany do przechowywania.
Jedynym sposobem na uniknięcie tego jest użycie VARBINARY
i BLOB
zamiast VARCHAR
i TEXT
.
Użycie COLLATION utf8mb4_bin
nie unika konwersji do/z CHARACTER SET utf8mb4
; mówi tylko, że WHERE
i ORDER BY
powinien porównywać bity zamiast zajmować się akcentami i składaniem kopert.
Pamiętaj, że CHARACTER SET utf8mb4
to sposób na kodowanie tekstu; COLLATION utf8mb4_*
to zasady porównywania tekstów w tym kodowaniu. _bin
jest prosty.
UNIQUE
obejmuje porównywanie pod kątem równości, stąd COLLATION
. W większości zestawień utf8mb4 3 (bez spacji) będą porównywalne. utf8mb4_bin
potraktuje 3 jako różne. utf8mb4_hungarian_ci
traktuje one=One>öne.
Końcowe spacje są kontrolowane przez typ danych kolumny (VARCHAR
lub inny). Najnowsza wersja ma nawet ustawienie określające, czy brać pod uwagę końcowe spacje.