Swa*_*ain 4 mysql sql full-text-search
我的 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;
Run Code Online (Sandbox Code Playgroud)
此脚本显示以下错误。 错误代码:1214。使用的表类型不支持 FULLTEXT 索引
我的 mySql 版本是 5.6。当我将引擎更改为 MyISAM 时,它工作正常。任何人都可以解释为什么 MySQL 会像这样我想使用 InnoDB 引擎。
InnoDB 5.6 确实支持全文索引类型。我刚刚在 MySQL 5.6.17 的测试实例上测试了你的 CREATE TABLE 语句,它工作正常。
我建议您仔细检查是否在 5.6 实例上运行该语句。
mysql> SELECT VERSION();
Run Code Online (Sandbox Code Playgroud)
此外,InnoDB 想让你的主键列以FTS_DOC_ID全部大写字母命名。如果您将其命名为其他名称,它不会给您带来错误,但根据我的经验,将数据加载到表中会导致失控的内存增长。但也许这是他们修复的错误。无论如何,请注意它。