yanbin's Blog

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

MySQL 使用了InnoDB存儲引擎 UNIQUE index 長度限制是 767 byes; 使用了MyISAM存儲引擎長度限制是 1000 bytes。
使用了 utf-8 字符集兩種引擎下的 vchar 型 UNIQUE index 最大長度分別是 vchar(255) 和 vchar(333),
utf-8 最多使用 3 bytes 表示一個字符: 255 * 3 = 765 ...
使用了 utf-16 字符集兩種引擎下的 vchar 型 UNIQUE index 最大長度分別是 vchar(191) 和 vchar(250)。

django 有時遇到這個問題。
應當懷疑使用了 utf-8 之類的字符集並且 Field(unique=true, max_length=greater_than_255);
或者是否有 unique_together = ['field0', 'field1']; field0_max_length + field1_max_length > 255;

參見:mysql-specified-key-was-too-long-max-key-length-is-767-bytes

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 




Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee