2009-06-24 8 views
16

Je ne peux pas créer d'index sur varchar(500)."La clé spécifiée était trop longue, la longueur maximale de la clé est de 1000 octets"

MySQL: Specified key was too long; max key length is 1000 bytes

+1

La réponse complète à cette question est donnée [ici] (http://stackoverflow.com/questions/1814532/1071-specified-key-was-too-long-max -key-length-is-767-bytes/1814594 # 1814594). –

+0

Voici une solution courte et complètement fonctionnante de 1 ligne: http://stackoverflow.com/questions/1814532/1071-specified-key-was-too-long-max-key-length-is-767-bytes/22873006#22873006 –

Répondre

24
latin1 = 1 byte = 1 character 
uft8 = 3 byte = 1 character 
gbk = 2 byte = 1 character 
+4

Les caractères utf-8 ne doivent-ils pas être de longueur variable (1-4), selon le code de code Unicode? – Svante

+5

Le nombre maximum d'octets requis pour un caractère utf8 est 3, et MySQL doit prévoir que tous les caractères dans le champ soient le nombre maximum d'octets. – Jrgns

+0

Sauf le nombre maximal d'octets sur UTF-8 est de 4 octets. MySQL a pris cette décision stupide, stupide, stupide, horriblement maléfique de faire en sorte qu'utf8 ne supporte que 3 octets. Le "vrai" jeu de caractères compatible UTF-8 est utf8mb4, uniquement supporté par MySQL 5.6. –

Questions connexes