代码之家  ›  专栏  ›  技术社区  ›  Ben G

全文键太长

  •  1
  • Ben G  · 技术社区  · 15 年前

    在我的MySQL数据库中,尝试向标题、版本和作者添加全文索引时出现以下错误:

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

    以下是列:

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

    它们都不是独一无二的。即使三者的结合也不是唯一的。数据库的主键是ISBN。

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

    1 回复  |  直到 15 年前
        1
  •  2
  •   OMG Ponies    15 年前

    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字节。