error(1071: Specified key was too long; max key length is 767 bytes)
lastQuery: ALTER TABLE account
MODIFY COLUMN name
varchar(255) not null DEFAULT ‘’;.
name这个字段上是建了索引的。类型是varchar(255)
这个报错的意思是说name这个字段允许的字节总数已经超过了767,
首先这个255是代表字符数,不是字节总数。也就是说name最多能存放255个字符长的字符串。
每个name所占的字节总数是 字符总数 x 字符集里规定的每个字符所占的字节数。
比如说我MySQL数据库的字符集是utf8mb4,utf8mb4规定每个字符最多可以占四个字节, 比如一些很偏僻的汉字。
那么varchar(255)最大可以占到的字节总数是255 x 4 = 1020(字节)
1020已经大于767了
解决方法:
1、 将varchar(255)的255改成小于等于191都可以(255 / 4 = 191.75 )。
2、 换成其他字符集,比如utf8,utf8一个字符最多占3个字节。255 x 3 = 765(字节)