MySQL ønsker at konvertere strenge ved INSERT
og SELECT
. Konverteringen er mellem det, du erklærer klienten at have og hvad kolonnen er erklæret til opbevaring.
Den eneste måde at undgå det på er med VARBINARY
og BLOB
i stedet for VARCHAR
og TEXT
.
Brugen af COLLATION utf8mb4_bin
undgår ikke konvertering til/fra CHARACTER SET utf8mb4
; den siger blot at WHERE
og ORDER BY
bør sammenligne bitsene i stedet for at beskæftige sig med accenter og sagfoldning.
Husk at CHARACTER SET utf8mb4
er en måde at kode tekst på; COLLATION utf8mb4_*
er regler for sammenligning af tekster i den kodning. _bin
er enkeltsindet.
UNIQUE
involverer sammenligning for lighed, derfor COLLATION
. I de fleste utf8mb4-kollationer vil de 3 (uden mellemrum) sammenlignes. utf8mb4_bin
vil behandle de 3 som forskellige. utf8mb4_hungarian_ci
behandler one=One>öne.
De efterfølgende mellemrum styres af kolonnens datatype (VARCHAR
eller andre). Den seneste version har endda en indstilling, der relaterer til, om man skal overveje efterfølgende mellemrum.