MySQL quiere convertir cadenas al hacer INSERT
y SELECT
. La conversión es entre lo que declara el cliente tener y lo que la columna se declara que está almacenando.
La única forma de evitarlo es con VARBINARY
y BLOB
en lugar de VARCHAR
y TEXT
.
El uso de COLLATION utf8mb4_bin
no evita la conversión a/desde CHARACTER SET utf8mb4
; simplemente dice que WHERE
y ORDER BY
debería comparar los bits en lugar de lidiar con los acentos y el plegado de casos.
Tenga en cuenta que CHARACTER SET utf8mb4
es una forma de codificar texto; COLLATION utf8mb4_*
son reglas para comparar textos en esa codificación. _bin
es ingenuo.
UNIQUE
implica comparar la igualdad, por lo tanto COLLATION
. En la mayoría de las intercalaciones utf8mb4, el 3 (sin espacios) se comparará igual. utf8mb4_bin
tratará a los 3 como diferentes. utf8mb4_hungarian_ci
trata a uno=Uno>öuno.
Los espacios finales están controlados por el tipo de datos de la columna (VARCHAR
u otro). La última versión incluso tiene una configuración relacionada con si se deben considerar los espacios finales.