【发布时间】:2016-04-15 11:24:51
【问题描述】:
我了解 InnoDB 索引的最大长度为 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 字节。
但是 token 列的长度只有 128 字节,email 是 254 字节,没有超过 767 字节。希望任何人都可以帮助我!提前致谢!
【问题讨论】:
-
254 是 字符。如果您使用的是
CHARACTER SET utf8mb4,则需要乘以 4 才能得到 bytes。