由于我试图通过稍微使用代码来理解SQL,我遇到了这种情况。我运行此代码
SELECT * FROM jobs WHERE MATCH ( title, location, description ) AGAINST ( 'New York designer')
我得到了正确的行结果。但是,如果我问自己,“好吧,如果我只想看一栏怎么办?”
SELECT * FROM jobs WHERE match(location) against ('designer')
我收到错误“无法找到与列列表匹配的FULLTEXT索引”。为什么?我不确定这个错误意味着什么。我只删除了两个单词和逗号。
我更改了jobs表以使用MyISAM
引擎。这是否意味着它可以搜索或“FULLTEXT
”?由于InnoDB
无法搜索,这是正确的说法吗?
但是现在,当孤立搜索到一列时,这是一个问题?
如果这有意义,请告诉我,我会重新编辑。
答案 0 :(得分:7)
FULLTEXT
索引是MyISAM
存储引擎的一项功能。
除非该列上仅有FULLTEXT
索引,否则您无法与位置列匹配。
MATCH()列列表必须与表的某些FULLTEXT索引定义中的列列表完全匹配,除非此MATCH()是IN BOOLEAN MODE。布尔模式搜索可以在非索引列上完成,但它们可能很慢。
http://dev.mysql.com/doc/refman/5.0/en/fulltext-restrictions.html
答案 1 :(得分:1)
当一切正常但仍然出现此错误时,我发现KEYS已被禁用..
确保您已启用该表上的键
当我禁用钥匙时,它对我不起作用......我启用了键“ALTER TABLE table name
ENABLE KEYS;
它工作正常