试图理解“找不到匹配列列表的FULLTEXT索引”错误

时间:2011-07-16 06:08:44

标签: mysql sql

由于我试图通过稍微使用代码来理解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无法搜索,这是正确的说法吗?

但是现在,当孤立搜索到一列时,这是一个问题?

如果这有意义,请告诉我,我会重新编辑。

2 个答案:

答案 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;

它工作正常