UNIQUE INDEX - 指定的键太长;最大密钥长度为 767 字节 [重复]
Posted
技术标签:
【中文标题】UNIQUE INDEX - 指定的键太长;最大密钥长度为 767 字节 [重复]【英文标题】:UNIQUE INDEX - Specified key was too long; max key length is 767 bytes [duplicate] 【发布时间】:2017-12-30 10:43:12 【问题描述】:我需要将 url 保存到一个 mysql 表中,我还需要通过它们的 url 搜索行。为了提高性能,我想为 url 列添加唯一索引。
CREATE TABLE `fp_feeds_in_records` (
`id` bigint auto_increment NOT NULL,
`url` varchar(1000) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
unique unique_url (val)
) ENGINE=InnoDB
但是当我运行 CREATE 语句时,我收到错误消息:Error Code: 1071. Specified key was too long; max key length is 767 bytes
。
我需要保存的网址太长,所以我不能像其他答案所暗示的那样使用 varchar(255) 。 MySQL 版本是 5.6.35。
我该如何解决?
【问题讨论】:
【参考方案1】:不幸的是,没有真正的解决方案。您唯一的选择是减小列的大小、使用不同的字符集(如 UTF-8)或使用不同的引擎(如 MYISAM)。在这种情况下,我将字符集切换为 UTF-8,从而将最大密钥长度提高到 255 个字符。
【讨论】:
以上是关于UNIQUE INDEX - 指定的键太长;最大密钥长度为 767 字节 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
SQL 错误 #1071 - 指定的键太长;最大密钥长度为 767 字节
Mysql Entity Framework 问题 - 指定的键太长;最大密钥长度为 3072 字节
SQLSTATE[42000]:语法错误或访问冲突:1071 指定的键太长;最大密钥长度为 767 字节
Laravel 迁移错误:语法错误或访问冲突:1071 指定的键太长;最大密钥长度为 767 字节 laravel 5.3