所以我在我的一个表的列中添加了全文索引,我的数据库引擎是MyIsam,我仍然得到这个令人讨厌的错误:
致命错误:未捕获的异常'mysqli_sql_exception',消息'无法找到与列列表匹配的FULLTEXT索引'...我的查询:
$stmt = $db->prepare("SELECT loc, lt, lg FROM locations WHERE MATCH(loc) AGAINST(?) ");
如何解决这个问题以及我应该寻找什么?
答案 0 :(得分:0)
您应该查找FULLTEXT索引的定义。显然,它的定义不仅仅是列,而是单个loc
列。
mysql> SHOW CREATE TABLE locations\G
CREATE TABLE `locations` (
`loc` text,
`name` text,
`summary` text,
FULLTEXT KEY `name` (`name`,`summary`,`loc`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
您在MATCH()
函数中命名的列必须 all 全文索引的列,并且它们的顺序必须相同。
示例:
-- WRONG; only using one of the three columns
SELECT loc, lt, lg FROM locations WHERE MATCH(loc) AGAINST(?)
-- WRONG; using all three columns, but in a different order than the index
SELECT loc, lt, lg FROM locations WHERE MATCH(loc, name, summary) AGAINST(?)
-- RIGHT:
SELECT loc, lt, lg FROM locations WHERE MATCH(name, summary, loc) AGAINST(?)