Question

J'ai une table d'utilisateurs dans laquelle il y a une colonne appelée "surnom", UTF-8 codé, Varchar (20), la table est en InnoDB.Il y a 2 enregistrements que l'on a un surnom= 'gunni' et l'autre surnom= 'Günni'.Lorsque j'ai essayé d'appliquer un index unique sur cette colonne, MySQL m'a donné cette erreur:

Erreur 1062 (23000) à la ligne 263: entrée en double 'gunni' pour la clé 2

J'ai vérifié les données Il n'y a qu'un seul enregistrement qui a le nom 'Gunni', et si je modifie l'enregistrement "Günni" à quelque chose d'autre, appliquez à nouveau l'index unique, tout fonctionne bien.

Comment se fait-il 'Günni' et 'Gunni' sont-ils duplicats?Voici les valeurs hexagonales pour eux, je reçois cela avec la fonction Hex () de MySQL:

gunni -> 67756E6E69

Günni -> 67C3BC6E6E69

Ils sont évidemment différents.Comment se fait-il que MySQL traite ces 2 identiques?Ou y a-t-il quelque chose que je ne connais pas d'index uniques?Ou même, pourrait-il être un bug mysql?

Était-ce utile?

La solution

C'est à cause de la classement que vous utilisez.

Tout ce qui se termine avec _CI est insensible à la casse (ainsi que l'accent / umlaut insensible).Alors oui, MySQL considérera "Günni" et "Gunni" la même chose, à moins que vous ne changez de votre collation.

docs: http://dev.mysql.com/DOC / REFMAN / 5.0 / FR / CHRSTE-TABLE.HTML

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top