MySQL иска да конвертира низове, когато прави INSERT
и SELECT
. Преобразуването е между това, което декларирате за клиент да има и какво е колона е обявено за съхранение.
Единственият начин да избегнете това е с VARBINARY
и BLOB
вместо VARCHAR
и TEXT
.
Използването на COLLATION utf8mb4_bin
не избягва преобразуването към/от CHARACTER SET utf8mb4
; той просто казва, че WHERE
и ORDER BY
трябва да сравнява битовете, вместо да се занимава с акценти и сгъване на главни букви.
Имайте предвид, че CHARACTER SET utf8mb4
е начин за кодиране на текст; COLLATION utf8mb4_*
е правила за сравняване на текстове в това кодиране. _bin
е простодушен.
UNIQUE
включва сравняване за равенство, следователно COLLATION
. В повечето съпоставяния utf8mb4 3 (без интервали) ще се сравняват равни. utf8mb4_bin
ще третира 3-те като различни. utf8mb4_hungarian_ci
третира one=One>öne.
Крайните интервали се контролират от типа данни на колоната (VARCHAR
или друго). Най-новата версия дори има настройка, свързана с това дали да се обмислят крайни интервали.