📅  最后修改于: 2023-12-03 15:10:04.264000             🧑  作者: Mango
当在执行MySQL的全文搜索操作时,如果出现“找不到与列列表匹配的FULLTEXT索引”,那么很可能是以下几个原因:
如果要执行全文搜索,那么针对要搜索的列必须要创建FULLTEXT索引,如果没有创建该索引,就会出现这个错误。
解决方法:为需要搜索的列创建FULLTEXT索引,例如:
ALTER TABLE tableName ADD FULLTEXT(columnName);
如果查询语句中没有指定要搜索的列,那么就会出现这个错误。比如以下查询语句:
SELECT * FROM tableName WHERE MATCH(keyword) AGAINST('search');
就会报“找不到与列列表匹配的FULLTEXT索引”错误,因为没有指定要搜索的列。
解决方法:在查询语句中指明要搜索的列,例如:
SELECT * FROM tableName WHERE MATCH(columnName) AGAINST('search');
如果查询语句中指定的列与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索引不匹配这几个方面入手,找到出错的原因并加以解决。