尝试在我的MySQL数据库中向Title,Edition和Author添加FULLTEXT索引时出现以下错误:
指定的密钥太长;最大密钥长度为1000字节
以下是专栏:
`Title` varchar(255) NOT NULL,
`Edition` varchar(20) default NULL,
`Authors` varchar(255) default NULL,
它们都不是唯一的。即使是所有3种的组合也不是唯一的。数据库的主键是ISBN。
我添加此FULLTEXT索引的原因是人们可以使用可能包含标题,版本或作者的关键字搜索图书。
答案 0 :(得分:2)
MySQL对索引的空间分配有限制 - it's 1000 bytes for MyISAM, 767 for InnoDB。
限制的唯一方法是定义索引列的一部分的键 - 这意味着将在索引中的所有键,限制它的值:
CREATE INDEX index_name ON YOUR_TABLE(title(100), edition, authors(100));
这将索引标题列的前100个字符,所有版本列和作者列的100个字符。我相信VARCHAR列的比率为3:1,因此VARCHAR(250)需要750个字节。