2009-06-24 7 views
16

Nie mogę utworzyć indeksu na varchar(500)."Podany klucz był za długi, maksymalna długość klucza to 1000 bajtów"

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

+1

Pełną odpowiedź na to pytanie jest podany [tutaj] (http://stackoverflow.com/questions/1814532/1071-specified-key-was-too-long-max -key-length-is-767-bajtów/1814594 # 1814594). –

+0

Oto 1 krótko działające i całkowicie działające rozwiązanie: http://stackoverflow.com/questions/1814532/1071-specyfikowany-key-to-to-long-max-key-length-jest-767-bytes/22873006#22873006 –

Odpowiedz

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

Czy znaki utf-8 nie powinny mieć zmiennej długości (1-4), w zależności od punktu kodu Unicode? – Svante

+5

Maksymalna liczba bajtów potrzebnych dla jednego znaku utf8 wynosi 3, a MySQL musi zapewnić, że wszystkie znaki w polu te będą maksymalną liczbą bajtów. – Jrgns

+0

Z wyjątkiem maksymalnej liczby bajtów na UTF-8 wynosi 4 bajty. MySQL dokonał tej głupiej, głupiej, głupiej, strasznie złej decyzji, aby utf8 obsługiwał tylko 3 bajty. "Prawdziwy" zestaw znaków kompatybilny z UTF-8 to utf8mb4, obsługiwany tylko w MySQL 5.6. –

Powiązane problemy