2009-06-24 16 views
16

Non riesco a creare l'indice su varchar(500)."La chiave specificata era troppo lunga, la lunghezza massima della chiave è di 1000 byte"

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

+1

è dato la risposta completa a questa domanda [qui] (http://stackoverflow.com/questions/1814532/1071-specified-key-was-too-long-max -key-lunghezza-è-767-byte/1.814.594 # 1.814.594). –

+0

Ecco una linea breve e soluzione completamente funzionante: http://stackoverflow.com/questions/1814532/1071-specified-key-was-too-long-max-key-length-is-767-bytes/22873006#22873006 –

risposta

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

I caratteri utf-8 non dovrebbero essere di lunghezza variabile (1-4), a seconda del punto di codice Unicode? – Svante

+5

Il numero massimo di byte necessari per un carattere utf8 è 3 e MySQL deve prevedere che tutti i caratteri nel campo siano il numero massimo di byte. – Jrgns

+0

Tranne il numero massimo di byte su UTF-8 è 4 byte. MySQL ha preso questa decisione stupida, stupida, stupida, orribilmente cattiva per rendere utf8 supportante solo 3 byte. Il charset "reale" UTF-8 compatibile è utf8mb4, supportato solo su MySQL 5.6. –

Problemi correlati