mysql – 为什么InnoDB不支持全文搜索索引,MyISAM支持它?

我的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引擎.

最佳答案
InnoDB 5.6支持全文索引类型.我刚刚在MySQL 5.6.17的测试实例上测试了你的CREATE TABLE语句,它运行正常.

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

mysql> SELECT VERSION();

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

转载注明原文:mysql – 为什么InnoDB不支持全文搜索索引,MyISAM支持它? - 代码日志