2011-07-16 35 views
2

因爲我試圖通過演示代碼來理解SQL,所以我遇到了這種情況。我運行此代碼試圖瞭解「無法找到匹配列列表的FULLTEXT索引」錯誤

SELECT * FROM jobs WHERE MATCH (title, location, description) AGAINST ('New York designer') 

我得到正確的結果。但是,如果我問自己,「好吧,如果我只想看一列,怎麼辦?」

SELECT * FROM jobs WHERE match(location) against ('designer') 

我得到錯誤「無法找到匹配列列表的FULLTEXT索引」。爲什麼?我不確定這個錯誤是什麼意思。我只是刪除了兩個單詞和逗號。

我修改作業表以使用MyISAM引擎。這是否意味着它可以搜索或「FULLTEXT」?由於InnoDB不可搜索,因此是否正確?

但現在,當孤立搜索到一列時,這是一個問題?

讓我知道如果這是有道理的,我會重新編輯。

+3

'我只是刪除了兩個單詞和逗號.'歡迎來到軟件開發專業。在形式語言中,單個字符是無效和有效語法之間的區別,或者是具有兩種不同含義的有效語法。 –

回答

7

FULLTEXT索引是MyISAM存儲引擎的一項功能。

除非僅有該列上的FULLTEXT索引,否則無法與位置列匹配。

除非此MATCH()爲IN BOOLEAN MODE,否則MATCH()列列表必須完全匹配表的某些FULLTEXT索引定義中的列列表。布爾模式搜索可以在非索引列上完成,儘管它們可能很慢。

http://dev.mysql.com/doc/refman/5.0/en/fulltext-restrictions.html

1

當一切是正確的,仍得到這個錯誤,我發現鑰匙在禁用..

確保ü已啓用鍵在該表

它沒」 t爲我工作,當我禁用了鍵...

我啓用了鍵「改變表table name啓用鍵;

它工作正常

相關問題