1

尝试在我的 MySQL 数据库中将 FULLTEXT 索引添加到 Title、Edition 和 Author 时出现以下错误:

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

以下是列:

`Title` varchar(255) NOT NULL,
`Edition` varchar(20) default NULL,
`Authors` varchar(255) default NULL,

它们都不是唯一的。即使所有 3 的组合也不是唯一的。数据库的主键是 ISBN。

我添加此 FULLTEXT 索引的原因是人们可以使用可能包括标题、版本或作者的关键字来搜索书籍。

4

1 回答 1

2

MySQL 对为索引分配多少空间有限制——MyISAM为 1000 字节, InnoDB 为 767 字节

绕过限制的唯一方法是定义索引列的一部分的键 - 这意味着索引中的所有内容,限制它的值:

CREATE INDEX index_name ON YOUR_TABLE(title(100), edition, authors(100));

这将索引 title 列的前 100 个字符、所有 edition 列和 authors 列的 100 个字符。我相信 VARCHAR 列的比率是 3 比 1,因此 VARCHAR(250) 占用 750 个字节。

于 2010-08-09T04:57:38.570 回答