首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在InnoDB中不支持全文搜索索引,而在MyISAM中支持它?

为什么在InnoDB中不支持全文搜索索引,而在MyISAM中支持它?
EN

Stack Overflow用户
提问于 2014-06-02 05:48:23
回答 1查看 1.6K关注 0票数 4

我的MySQL脚本

代码语言:javascript
复制
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。使用的表类型不支持全文索引

我的mySql版本是5.6。当我把引擎换成MyISAM时,它的工作状态很好。有谁能解释一下为什么MySQL的行为是这样的--我想使用InnoDB引擎。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-02 05:52:56

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

我建议你再检查一下你是不是在5.6个实例上运行这个语句。

代码语言:javascript
复制
mysql> SELECT VERSION();

此外,InnoDB希望您在所有大写字母中使用名为FTS_DOC_ID的主键列。如果您将它命名为其他东西,它不会给您带来错误,但根据我的经验,将数据加载到表中会导致内存的失控增长。但也许那是他们修好的窃听器。不管怎样,小心点。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23988035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档