我創建了一個名爲users
表,如下所示:MySQL全文索引的查詢返回錯誤,創建索引
CREATE TABLE users (
u_id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
u_namefirst VARCHAR(100),
u_namelast VARCHAR(100),
u_email VARCHAR(100),
FULLTEXT (u_namefirst, u_namelast, u_email)
) ENGINE=MyISAM;
並用數據填充它:
INSERT INTO users (u_namefirst, u_namelast, u_email) VALUES
('Michael','Williams','[email protected]'),
('Jon','Test','[email protected]'),
('Jane','Smith','[email protected]'),
('Fred','Francis','[email protected]'),
('Mike','Williams','[email protected]'),
('Michael','Burke','[email protected]');
然而,當我運行:
SELECT *
FROM users
WHERE MATCH (u_namelast) AGAINST ('williams');
我得到:「錯誤代碼:1191.找不到匹配列列表的FULLTEXT索引」。該指數絕對存在,其類型絕對是全文。已經爲該索引選擇了正確的列。
我試着運行InnoDB和MyISAM引擎,我得到了相同的結果。作爲一個測試,當我交換WHERE u_namefirst = 'michael'
的最後一行時,我得到了正確的結果 - 所以我不認爲這是現有數據的問題。
我在Windows 7旗艦版上運行MySQL 5.6.16(x86_64)。
任何幫助表示讚賞!
請出示'create table'語句以及用於創建索引的任何其他語句。顯而易見的假設是該指數並不存在。 –
該表最初是從Access文件導入的。這個索引是用MySQL Workbench用以下代碼創建的: 'ALTER TABLE'system'。'user'ADD FULLTEXT INDEX'search'('firstname'ASC);' – Modemmute
基於單引號的使用,我的猜測是該索引從未創建。只對字符串和日期常量使用單引號。 –