2010-08-09 62 views
0

我在尝试添加FULLTEXT索引标题,版和作者在我的MySQL数据库时出现以下错误:全文键太长

指定的键过长;最大密钥长度为1000个字节

这里是列:

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

他们都不是独一无二的。即使在所有3组合不是唯一的。数据库的主键是ISBN。

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

+0

这个问题的答案已经给出[这里](http://stackoverflow.com/questions/3489041/mysqlerror-specified-key-was-too-long-max-key-length-is-1000-bytes/3489331#3489331)。 – 2011-11-10 10:08:04

回答

1

MySQL对索引分配多少空间有限制 - it's 1000 bytes for MyISAM, 767 for InnoDB

周围的限制,唯一的方法是定义键该索引列的一部分 - 这意味着这是所有将在索引,限制它的值:

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

也就是说将索引中的第一百标题栏的字符,所有版本栏以及作者栏的100个字符。我相信VARCHAR列的比率是3比1,所以VARCHAR(250)需要750个字节。

+0

非常感谢 – babonk 2010-08-09 05:00:48