MySQL veut convertir les chaînes lors de l'exécution de INSERT
et SELECT
. La conversion est entre ce que vous déclarez le client avoir et ce que la colonne est déclaré comme stockant.
La seule façon d'éviter cela est avec VARBINARY
et BLOB
au lieu de VARCHAR
et TEXT
.
L'utilisation de COLLATION utf8mb4_bin
n'évite pas la conversion vers/depuis CHARACTER SET utf8mb4
; il dit simplement que WHERE
et ORDER BY
devrait comparer les morceaux au lieu de s'occuper des accents et du pliage de la casse.
Gardez à l'esprit que CHARACTER SET utf8mb4
est un moyen d'encoder du texte ; COLLATION utf8mb4_*
est des règles pour comparer des textes dans cet encodage. _bin
est simple d'esprit.
UNIQUE
implique de comparer l'égalité, d'où COLLATION
. Dans la plupart des classements utf8mb4, les 3 (sans espaces) seront comparables. utf8mb4_bin
traitera les 3 comme différents. utf8mb4_hungarian_ci
traite un=Un>öne.
Les espaces de fin sont contrôlés par le type de données de la colonne (VARCHAR
ou autre). La dernière version a même un paramètre relatif à la prise en compte des espaces de fin.