MySQL vuole convertire le stringhe quando si esegue INSERT
e SELECT
. La conversione è tra ciò che dichiari il cliente avere e cosa è la colonna è dichiarato in fase di archiviazione.
L'unico modo per evitarlo è con VARBINARY
e BLOB
invece di VARCHAR
e TEXT
.
L'uso di COLLATION utf8mb4_bin
non evita la conversione in/da CHARACTER SET utf8mb4
; dice semplicemente che WHERE
e ORDER BY
dovrebbe confrontare i bit invece di occuparsi degli accenti e della piegatura delle maiuscole.
Tieni presente che CHARACTER SET utf8mb4
è un modo per codificare il testo; COLLATION utf8mb4_*
è regole per confrontare i testi in quella codifica. _bin
è ingenuo.
UNIQUE
implica il confronto per l'uguaglianza, quindi COLLATION
. Nella maggior parte delle regole di confronto utf8mb4, il 3 (senza spazi) risulterà uguale. utf8mb4_bin
tratterà i 3 come diversi. utf8mb4_hungarian_ci
tratta uno=Uno>one.
Gli spazi finali sono controllati dal tipo di dati della colonna (VARCHAR
o altro). L'ultima versione ha anche un'impostazione relativa alla possibilità di considerare gli spazi finali.