【问题标题】:Why Full text search index is not supported in InnoDB where as its supported in MyISAM?为什么 InnoDB 不支持全文搜索索引,而 MyISAM 支持全文搜索索引?
【发布时间】:2014-06-02 05:48:23
【问题描述】:

我的 MySQL 脚本

DROP TABLE IF EXISTS `informationposting`;

CREATE TABLE `informationposting` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `StexId` varchar(9) DEFAULT NULL,
  `TargetContinent` int(11) DEFAULT NULL,
  `TargetCountry` int(11) DEFAULT NULL,
  `TargetCity` varchar(15) DEFAULT NULL,
  `InfoType` int(11) DEFAULT NULL,
  `WebsiteLink` varchar(30) DEFAULT NULL,
  `InfoPost` varchar(200) DEFAULT NULL,
  `PostingDate` datetime DEFAULT NULL,
  `ExpiryDate` datetime DEFAULT NULL,
  `Title` varchar(100) DEFAULT NULL,
  `NameOfOwner` varchar(45) DEFAULT NULL,
  `RegistrationTypeIdOfOwner` int(11) DEFAULT NULL,
  PRIMARY KEY (`Id`),
  KEY `FK_InformationUser_Id_idx` (`StexId`),
  FULLTEXT KEY `InfoPost` (`InfoPost`),
  FULLTEXT KEY `NameOfOwner` (`NameOfOwner`),
  FULLTEXT KEY `NameOfOwner_2` (`NameOfOwner`,`InfoPost`),
  CONSTRAINT `FK_InformationUser_Id` FOREIGN KEY (`StexId`) REFERENCES `userdetails` (`StexId`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8;

此脚本显示以下错误。 错误代码:1214。使用的表类型不支持 FULLTEXT 索引

我的 mySql 版本是 5.6。当我将引擎更改为 MyISAM 时,它工作正常。谁能解释一下为什么 MySQL 会这样我想使用 InnoDB 引擎。

【问题讨论】:

    标签: mysql sql full-text-search


    【解决方案1】:

    InnoDB 5.6 确实支持全文索引类型。我刚刚在 MySQL 5.6.17 的测试实例上测试了您的 CREATE TABLE 语句,它运行良好。

    我建议您仔细检查您是否在 5.6 实例上运行该语句。

    mysql> SELECT VERSION();
    

    此外,InnoDB 希望您将主键列命名为 FTS_DOC_ID 且全部大写。如果您将其命名为其他名称,它不会给您错误,但根据我的经验,将数据加载到表中会导致内存增长失控。但也许这是他们已经修复的错误。无论如何,请注意它。

    【讨论】:

      猜你喜欢
      • 2017-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-26
      • 1970-01-01
      相关资源
      最近更新 更多