【问题标题】:MySQL FULLTEXT indexes issueMySQL FULLTEXT 索引问题
【发布时间】:2009-06-08 05:36:47
【问题描述】:

我正在尝试在表的属性上创建 FULLTEXT 索引。 mysql返回

错误 1214:使用的表类型不支持 FULLTEXT 索引。

知道我做错了什么吗?

【问题讨论】:

    标签: mysql sql mysql-error-1214


    【解决方案1】:

    您使用了错误类型的表格。 Mysql 支持几种不同类型的表,但最常用的是 MyISAM 和 InnoDB。 MyISAM (in MySQL 5.6+also InnoDB tables) are the types of tables that Mysql supports for Full-text indexes.

    要检查表的类型,请发出以下 sql 查询:

    SHOW TABLE STATUS
    

    查看查询返回的结果,在Engine列中找到你的表和对应的值。如果这个值是除 MyISAM 或 InnoDB 之外的任何值,那么如果您尝试添加 FULLTEXT 索引,Mysql 将抛出错误。

    要纠正这个问题,您可以使用下面的 sql 查询来更改引擎类型:

    ALTER TABLE <table name> ENGINE = [MYISAM | INNODB]
    

    其他信息(认为它可能有用): Mysql 使用不同的引擎存储类型来优化特定表所需的功能。示例 MyISAM 是操作系统(除了 windows)的默认类型,可以快速执行 SELECT 和 INSERT;但不处理交易。 InnoDB 是 windows 的默认值,可用于事务。但是 InnoDB 确实需要更多的服务器磁盘空间。

    【讨论】:

    • 不,但是 ALTER TABLE 语句说“MYISM”。
    • 很抱歉再次打扰您,但您最后添加的内容至少需要澄清。 MyISAM 不支持事务。为什么 MyISAM 更适合更新?它会锁定更新时触及的每一​​行,虽然它在重读/低写场景中表现良好,但在重写场景中却失败了。
    • 那部分我是凭记忆记忆的……我会再查一遍,如果我错了,请尽快更改……再次感谢您的提醒。也许我把两者交换了利弊。
    • 非常感谢...我解决了与此相同的问题。
    • MYISAM 也不支持外键,IIRC。
    【解决方案2】:

    在 MySQL 5.6 之前,MyISAM 是唯一支持全文搜索 (FTS) 的存储引擎,但 MySQL 5.6 中的 InnoDB FTS 在语法上确实与 MyISAM FTS 相同。请阅读下文了解更多详情。

    InnoDB Full-text Search in MySQL 5.6

    【讨论】:

      【解决方案3】:

      在 MySQL mysql manual 表示 FULLTEXT 索引只能在使用 mylsam 引擎的表上创建。

      【讨论】:

      • 这不再是真的。
      【解决方案4】:

      你在使用 InnoDB 吗?唯一支持 FULLTEXT 的表类型是 MyISAM。

      【讨论】:

      • 这不再是真的。
      【解决方案5】:

      除了MyISAM表PARTITIONING也不支持full-text索引。

      【讨论】:

        猜你喜欢
        • 2010-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-26
        • 2018-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多