📜  找不到与列列表匹配的 FULLTEXT 索引 (1)

📅  最后修改于: 2023-12-03 15:10:04.264000             🧑  作者: Mango

找不到与列列表匹配的 FULLTEXT 索引

当在执行MySQL的全文搜索操作时,如果出现“找不到与列列表匹配的FULLTEXT索引”,那么很可能是以下几个原因:

  1. 缺少FULLTEXT索引

如果要执行全文搜索,那么针对要搜索的列必须要创建FULLTEXT索引,如果没有创建该索引,就会出现这个错误。

解决方法:为需要搜索的列创建FULLTEXT索引,例如:

ALTER TABLE tableName ADD FULLTEXT(columnName);
  1. 查询语句中没有指定要搜索的列

如果查询语句中没有指定要搜索的列,那么就会出现这个错误。比如以下查询语句:

SELECT * FROM tableName WHERE MATCH(keyword) AGAINST('search');

就会报“找不到与列列表匹配的FULLTEXT索引”错误,因为没有指定要搜索的列。

解决方法:在查询语句中指明要搜索的列,例如:

SELECT * FROM tableName WHERE MATCH(columnName) AGAINST('search');
  1. 查询语句中指定的列与FULLTEXT索引不匹配

如果查询语句中指定的列与FULLTEXT索引不匹配,那么就会出现这个错误。比如以下查询语句:

SELECT * FROM tableName WHERE MATCH(columnName1, columnName2) AGAINST('search');

就会报“找不到与列列表匹配的FULLTEXT索引”错误,因为FULLTEXT索引只创建在columnName1这一列上。

解决方法:在查询语句指定的列要与FULLTEXT索引匹配,例如:

SELECT * FROM tableName WHERE MATCH(columnName1) AGAINST('search');

总之,出现“找不到与列列表匹配的FULLTEXT索引”错误,要从缺少FULLTEXT索引、查询语句中没有指定要搜索的列、查询语句中指定的列与FULLTEXT索引不匹配这几个方面入手,找到出错的原因并加以解决。