我了解InnoDB索引最大长度是767字节。指定的密钥太长;最大密钥长度是767字节
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(254) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
.....
`token` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`rank` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `user_token_index` (`token`),
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
我想创建我的电子邮件索引。
alter table agent add UNIQUE index idx_on_email (email);
但得到的错误消息:
指定的键过长;最大密钥长度是767字节。
但是令牌列的长度只有128字节,电子邮件是254字节,而不是767字节以上。希望任何人都可以帮助我!提前致谢!
的[#1071可能的复制 - 指定的键过长;最大密钥长度是767字节](http://stackoverflow.com/questions/1814532/1071-specified-key-was-too-long-max-key-length-is-767-bytes) – Sadikhasan
254是_characters_。如果您使用'CHARACTER SET utf8mb4',则需要乘以4才能得到_bytes_。 –