Innodb的。错误代码:1191。无法找到与列列表匹配的FULLTEXT索引

时间:2015-02-04 16:08:16

标签: mysql full-text-search innodb

从myiasm迁移到innodb后,以下查询意外失败

SELECT postid, post.dateline
FROM post AS post  USE INDEX (threadid)
INNER JOIN thread AS thread ON(thread.threadid = post.threadid)
WHERE MATCH(post.title, post.pagetext) AGAINST ('+match1 +match2' IN BOOLEAN MODE) AND thread.threadid = <my_id>;

如果我删除USE INDEX (threadid),则查询有效

如果我改为删除MATCH(post.title, post.pagetext) AGAINST ('+match1 +match2' IN BOOLEAN MODE) AND,则查询也有效。

我使用的是版本5.6.19-log

架构的相关部分:

CREATE TABLE `post` (
  `postid` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `threadid` int(10) unsigned NOT NULL DEFAULT '0',
  `username` varchar(100) NOT NULL DEFAULT '',
  `userid` int(10) unsigned NOT NULL DEFAULT '0',
  `title` varchar(250) NOT NULL DEFAULT '',
  `dateline` int(10) unsigned NOT NULL DEFAULT '0',
  `pagetext` mediumtext NOT NULL,
  `allowsmilie` smallint(6) NOT NULL DEFAULT '0',
  `showsignature` smallint(6) NOT NULL DEFAULT '0',
  `ipaddress` varchar(16) NOT NULL DEFAULT '',
  `iconid` smallint(5) unsigned NOT NULL DEFAULT '0',
  `visible` smallint(6) NOT NULL DEFAULT '0',
  `parentid` int(10) unsigned NOT NULL DEFAULT '0',
  `attach` smallint(5) unsigned NOT NULL DEFAULT '0',
  `infraction` smallint(5) unsigned NOT NULL DEFAULT '0',
  `reportthreadid` int(10) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`postid`),
  KEY `userid` (`userid`),
  KEY `threadid` (`threadid`,`userid`),
  FULLTEXT KEY `title` (`title`,`pagetext`)
)

CREATE TABLE `thread` (
  `threadid` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(250) NOT NULL DEFAULT '',
  `lastpost` int(10) unsigned NOT NULL DEFAULT '0',
  `forumid` smallint(5) unsigned NOT NULL DEFAULT '0',
  `pollid` int(10) unsigned NOT NULL DEFAULT '0',
  `open` tinyint(4) NOT NULL DEFAULT '0',
  `replycount` int(10) unsigned NOT NULL DEFAULT '0',
  `postusername` varchar(100) NOT NULL DEFAULT '',
  `postuserid` int(10) unsigned NOT NULL DEFAULT '0',
  `lastposter` varchar(100) NOT NULL DEFAULT '',
  `dateline` int(10) unsigned NOT NULL DEFAULT '0',
  `views` int(10) unsigned NOT NULL DEFAULT '0',
  `iconid` smallint(5) unsigned NOT NULL DEFAULT '0',
  `notes` varchar(250) NOT NULL DEFAULT '',
  `visible` smallint(6) NOT NULL DEFAULT '0',
  `sticky` smallint(6) NOT NULL DEFAULT '0',
  `votenum` smallint(5) unsigned NOT NULL DEFAULT '0',
  `votetotal` smallint(5) unsigned NOT NULL DEFAULT '0',
  `attach` smallint(5) unsigned NOT NULL DEFAULT '0',
  `firstpostid` int(10) unsigned NOT NULL DEFAULT '0',
  `similar` varchar(55) NOT NULL DEFAULT '',
  `hiddencount` int(10) unsigned NOT NULL DEFAULT '0',
  `deletedcount` smallint(5) unsigned NOT NULL DEFAULT '0',
  `lastpostid` int(10) unsigned NOT NULL DEFAULT '0',
  `prefixid` varchar(25) NOT NULL DEFAULT '',
  `taglist` mediumtext,
  PRIMARY KEY (`threadid`),
  KEY `forumid` (`forumid`,`visible`,`sticky`,`lastpost`),
  KEY `postuserid` (`postuserid`),
  KEY `postuserid_2` (`postuserid`),
  KEY `pollid` (`pollid`),
  KEY `lastpost` (`lastpost`,`forumid`),
  KEY `dateline` (`dateline`),
  KEY `prefixid` (`prefixid`,`forumid`),
  FULLTEXT KEY `title` (`title`)
)

这可能是innodb中的错误吗? 删除USE INDEX (threadid)无关紧要我猜,查询规划器足够聪明

0 个答案:

没有答案