2009-06-24 3 views
16

Ich kann keinen Index für varchar(500) erstellen."Der angegebene Schlüssel war zu lang; die maximale Schlüssellänge beträgt 1000 Byte"

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

+1

Die vollständige Antwort auf diese Frage gegeben ist [hier] (http://stackoverflow.com/questions/1814532/1071-specified-key-was-too-long-max -Schlüssellänge-ist-767-Bytes/1814594 # 1814594). –

+0

Hier ist 1 Zeile kurz und vollständig funktionierende Lösung: http://stackoverflow.com/questions/1814532/1071-specified-key-was-too-long-max-key-length-is-767-bytes/22873006#22873006 –

Antwort

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

Sollen nicht utf-8 Zeichen variable Länge haben (1-4), abhängig vom Unicode-Codepunkt? – Svante

+5

Die maximale Anzahl von Bytes, die für ein utf8-Zeichen benötigt wird, ist 3, und MySQL muss vorsehen, dass alle Zeichen im te-Feld die maximale Anzahl an Bytes darstellen. – Jrgns

+0

Außer der maximalen Anzahl von Bytes auf UTF-8 ist 4 Bytes. MySQL hat diese blöde, dumme, dumme, schrecklich böse Entscheidung getroffen, utf8 nur 3 Bytes zu unterstützen. Der "echte" UTF-8-kompatible Zeichensatz ist utf8mb4, nur von MySQL 5.6 unterstützt. –

Verwandte Themen