当前位置:  开发笔记 > 编程语言 > 正文

指定密钥太长; 最大密钥长度为767字节

如何解决《指定密钥太长;最大密钥长度为767字节》经验,为你挑选了1个好方法。

据我所知,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字节.

但令牌列的长度只有128个字节,电子邮件是254个字节,不超过767个字节.希望有人能帮助我!提前致谢!



1> Gouda Elalfy..:

varchar(254)使用时utf8mb4,表示254个字符,每个字符有4个字节,电子邮件字段至少需要1016 bytes (254 * 4).您可以查看以下文章:http: //wildlyinaccurate.com/mysql-specified-key-was-too-long-max-key-length-is-767-bytes/, 这样您就可以创建电子邮件列:varchar(100 )


191是'utf8mb4`的限制,这可能是他正在使用的.
推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有