MySQL möchte Strings konvertieren, wenn INSERT
ausgeführt wird und SELECT
. Die Konvertierung erfolgt zwischen dem, was Sie als Client deklarieren zu haben und was die Spalte wird als speichernd deklariert.
Das lässt sich nur mit VARBINARY
vermeiden und BLOB
statt VARCHAR
und TEXT
.
Die Verwendung von COLLATION utf8mb4_bin
vermeidet nicht die Konvertierung zu/von CHARACTER SET utf8mb4
; es sagt lediglich, dass WHERE
und ORDER BY
sollte die Bits vergleichen, anstatt sich mit Akzenten und Groß-/Kleinschreibung zu befassen.
Denken Sie daran, dass CHARACTER SET utf8mb4
ist eine Möglichkeit, Text zu kodieren; COLLATION utf8mb4_*
sind Regeln zum Vergleichen von Texten in dieser Kodierung. _bin
ist einfältig.
UNIQUE
beinhaltet den Vergleich auf Gleichheit, daher COLLATION
. In den meisten utf8mb4-Sortierungen werden die 3 (ohne Leerzeichen) gleich verglichen. utf8mb4_bin
behandelt die 3 als unterschiedlich. utf8mb4_hungarian_ci
behandelt one=One>öne.
Die abschließenden Leerzeichen werden durch den Datentyp der Spalte gesteuert (VARCHAR
oder andere). Die neueste Version hat sogar eine Einstellung, ob nachgestellte Leerzeichen berücksichtigt werden sollen.