mysql - UNIQUE INDEX - 指定的键太长;最大 key 长度为 767 字节

标签 mysql

我需要将 url 保存到 mysql 表中,我还需要按 url 搜索行。为了提高性能,我想为 url 列添加 UNIQUE 索引。

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。

如何解决?

最佳答案

不幸的是,没有真正的解决方案。您唯一的选择是减小列的大小、使用不同的字符集(如 UTF-8)或使用不同的引擎(如 MYISAM)。在本例中,我将字符集切换为 UTF-8,从而将最大 key 长度提高到 255 个字符。

关于mysql - UNIQUE INDEX - 指定的键太长;最大 key 长度为 767 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45287487/

相关文章:

php - 插入编码查询

mysqldump : Got error: 1: "Can' t create/write to file '*.txt' (Errcode: 13 "Permission denied" )"when executing ' SELECT INTO OUTFILE'

php - PHP MYSQL 如何添加多个评分结果

mysql - 随机考虑他们的发帖用户(mysql)

php - ORDER BY 日期同时也在 MySQL 查询中使用 LIMIT - PHP

mysql - 优化获取每组前n条记录的方法

php - 如何将表单信息提交到我的MySQL服务器?

bash - 如何确定 bzipped mysqldump 文件是否为空/大小为零?

Mysql:混合书写方向/在以下情况下获取第一个字符

mysql - 2 相同类型的对象映射到MySQL DB问题