php - Mysql FULL TEXT 索引搜索错误

标签 php mysql database mysqli full-text-search

所以我在我的表的一个列中添加了全文索引,我的数据库引擎是 MyIsam,但我仍然遇到这个讨厌的错误:

fatal error :未捕获的异常“mysqli_sql_exception”,消息为“找不到与列列表匹配的全文索引”...我的查询:

$stmt = $db->prepare("SELECT loc, lt, lg FROM locations WHERE MATCH(loc) AGAINST(?) ");

如何解决这个问题,我应该寻找什么?

最佳答案

您应该查找 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() 函数中命名的列必须所有全文索引的列,并且它们的顺序必须相同。

例子:

-- 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(?)

关于php - Mysql FULL TEXT 索引搜索错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20874392/

相关文章:

php - 如何检测 Paypal cookies?

php - PDO 将默认获取模式设置为 FETCH_UNIQUE

MySQL 选择具有相同 FK 但在另一行中具有不同值的行

sql - 获取与传入员工属于完全相同位置列表的所有员工

php - 平面与分层组管理

php - 具有不同数量参数的子类构造函数

javascript - 如果编码数据不确定,如何在 javascript 中使用 json

mysql - 检查行数并删除超出限制的最后一行

android - 我想从数据库中获取数据并将其显示在 ListView 上。

sql - 如何对每一行 PostgreSQL 使用计数