MySQL vill konvertera strängar när man gör INSERT
och SELECT
. Konverteringen är mellan vad du deklarerar som klient att ha och vad kolumnen deklareras att lagras.
Det enda sättet att undvika det är med VARBINARY
och BLOB
istället för VARCHAR
och TEXT
.
Användningen av COLLATION utf8mb4_bin
undviker inte konvertering till/från CHARACTER SET utf8mb4
; det står bara att WHERE
och ORDER BY
bör jämföra bitarna istället för att ta itu med accenter och fallvikning.
Tänk på att CHARACTER SET utf8mb4
är ett sätt att koda text; COLLATION utf8mb4_*
är regler för att jämföra texter i den kodningen. _bin
är enfaldig.
UNIQUE
innebär att jämföra för jämlikhet, därav COLLATION
. I de flesta utf8mb4-kollationer kommer 3:an (utan mellanslag) att jämföras lika. utf8mb4_bin
kommer att behandla de 3 som olika. utf8mb4_hungarian_ci
behandlar one=One>öne.
De efterföljande utrymmena styrs av kolumnens datatyp (VARCHAR
eller annan). Den senaste versionen har till och med en inställning som rör om man ska överväga efterföljande utrymmen.