2010-02-18 9 views
3

Il semble que lorsque je modifie une table mysql (sur une table/colonnes utf-8) unique qu'il renvoie une erreur d'entrée en double.mysql résultat est "caractère spécial" -insensible

Exemple:

ALTER TABLE name ADD UNIQUE(name) 

erreur:

Duplicate entry 'Adé' for key 'name_UNIQUE' 

Je pense qu'il est à cause du suivi de lignes dans ma base de données

Ade, Adé 

Est-il possible de modifier une table unique avec caractères spéciaux?

Merci,

Bob

+0

+1 bonne question et bienvenue sur SO – Sarfraz

Répondre

3

Vous devez définir le collation sur la colonne (ou toute la table ou la base de données - Je ne pense pas que la portée de connexion fonctionnera pour unique contraintes) à celui qui respecte la différence entre "e" et "é". Voir here pour un exemple des effets que différents paramètres de classement peuvent avoir.

Si l'on suppose que votre charset est utf8, le classement le plus sûr que vous pouvez utiliser pour éviter d'obtenir des faux positifs sur votre contrainte unique serait utf8_bin, dans lequel deux chaînes ne comparent égales, à moins qu'ils sont la chaîne identique. Cependant, vous devrez faire attention à des choses comme la normalisation Unicode, sinon vous pourriez vous retrouver avec deux clés qui sont la même séquence de caractères, sous différentes formes de normalisation, ce qui les rend inégales. Juste une petite chose à surveiller.

Questions connexes