全文键太长
尝试将全文索引添加到 MySQL 数据库中的标题、版本和作者时,出现以下错误:
指定的密钥太长;最大密钥长度为 1000 字节
以下是各列:
`Title` varchar(255) NOT NULL,
`Edition` varchar(20) default NULL,
`Authors` varchar(255) default NULL,
它们都不是唯一的.. 即使所有 3 个的组合也不是唯一的。数据库的主键是 ISBN。
我添加此全文索引的原因是这样人们可以使用可能包括标题、版本或作者的关键字搜索书籍。
I get the following error when trying to add a FULLTEXT index to Title, Edition and Author in my MySQL database:
Specified key was too long; max key length is 1000 bytes
Here are the columns:
`Title` varchar(255) NOT NULL,
`Edition` varchar(20) default NULL,
`Authors` varchar(255) default NULL,
None of them are unique.. Even the combination of all 3 is not unique. Primary key on the database is the ISBN.
The reason I'm adding this FULLTEXT index is so people can search for books using a keyword that might include the Title, the Edition, or the Author.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
MySQL 对为索引分配多少空间有限制 - 它是MyISAM 为 1000 字节,InnoDB 为 767。
解决该限制的唯一方法是定义对列的一部分进行索引的键 - 这意味着这就是索引中的全部内容,限制了它的值:
这将对标题列的前 100 个字符以及所有版本列进行索引,以及作者栏的 100 个字符。我认为 VARCHAR 列的比例为 3 比 1,因此 VARCHAR(250) 需要 750 字节。
MySQL has a limit on how much space is allocated for indexes - it's 1000 bytes for MyISAM, 767 for InnoDB.
The only way around the limitation is to define keys that index a portion of the column - which means that's all that will be in the index, limiting it's value:
That will index the first 100 characters of the title column, all of the edition column, and 100 characters of the authors column. I believe is a 3 to 1 ratio for VARCHAR columns, so VARCHAR(250) takes 750 bytes.