【mysql】全文索引match多列报错

表结构如下:

 CREATE TABLE `T` (
  ....
  FULLTEXT KEY `title_fc` (`titleindex`),
  FULLTEXT KEY `shortname_fc` (`shortnameindex`)
) ENGINE=InnoDB AUTO_INCREMENT=50962041 DEFAULT CHARSET=utf8 

创建了两个全文索引,但是在查找的时候,却出现如下这样的错误。

mysql> SELECT count(1) as count FROM T a WHERE 1 = 1  AND MATCH (a.titleindex) AGAINST (‘"5YeM 5Yqo"‘ IN BOOLEAN MODE );
+-------+
| count |
+-------+
|    70 |
+-------+
1 row in set (0.01 sec)

mysql> SELECT count(1) as count FROM T a WHERE 1 = 1  AND MATCH (a.shortnameindex) AGAINST (‘"5YeM 5Yqo"‘ IN BOOLEAN MODE ) ;
+-------+
| count |
+-------+
|     6 |
+-------+
1 row in set (0.00 sec)

mysql> SELECT count(1) as count FROM T a WHERE 1 = 1  AND MATCH (a.shortnameindex ,a.titleindex) AGAINST (‘"5YeM 5Yqo"‘ IN BOOLEAN MODE ) ;
ERROR 1191 (HY000): Can‘t find FULLTEXT index matching the column list

单独match某一列可以正常查询,但是match多列就报错。

后来从MySQL的文档上面找到:The MATCH() column list must match exactly the column list in some FULLTEXT index definition for the table, unless this MATCH() is IN BOOLEAN MODE on a MyISAM table.

时间: 2024-10-03 23:20:54

【mysql】全文索引match多列报错的相关文章

MySql数据库执行insert时候报错:Column count doesn't match value count at row 1

遇到这个问题之后,第一反应就是前后列数不等造成的,但是我检查SQL之后,发现列数是相同得,但是插入还是有问题,然后又写了简单得SQL只插入不为空得字段,执行还是报这个错,最后请教了高人,指点之后,大概是因为当前插入得表被锁住了,然后执行下面得SQL后,之前得SQL就可以正常插入了 LOCK TABLES `system_function_info` WRITE;  UNLOCK TABLES; MySql数据库执行insert时候报错:Column count doesn't match val

客户端cmd打开mysql,执行插入中文报错或插入中文乱码解决方案

最近在制作一个安装包,需要安装的时候执行mysql脚本儿,做了一个批处理,但是发现总是执行到 插入中文的时候报错,或者插入中文是乱码. 网上查了好多资料,说是把编码改成GBK什么的,终究还是不成功. 最后经过多次测试,现把解决方案分享给大家. 第一步:打开mysql中的配置文件,my.ini,看一看配置文件中 [mysql] default-character-set=utf8 [mysqld] character-set-server=utf8 看是不是这样配置的.因为utf8 是国际通用的,

升级 MySQL 至 5.5,报错 [ERROR] Plugin 'InnoDB' init function returned error

MySQL 从 5.5 升级到 5.6,启动时报错: [ERROR] Plugin 'InnoDB' init function returned error. [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. [ERROR] Unknown/unsupported storage engine: InnoDB [ERROR] Aborting 原因:主要是没有正常关闭 mysqld 服务的情况下,对数据库参数进行改

【Mysql】存储emoji表情报错(Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...')的解决方案

普通的字符串或者表情都是占位3个字节,所以utf8足够用了,但是移动端的表情符号占位是4个字节,普通的utf8就不够用了,为了应对无线互联网的机遇和挑战.避免 emoji 表情符号带来的问题.涉及无线相关的 MySQL 数据库建议都提前采用 utf8mb4 字符集,这必须要作为移动互联网行业的一个技术选型的要点 Mysql 版本的限制,Mysql 5.5.3之前的版本,支持的utf8为3字节的,Mysql 5.5.3之后的版本支持utf8mb4 修改mysql的配置文件,windows下的为my

编译安装 mysql 5.5,运行 cmake报错Curses library not found

是因为 curses库没有安装,执行下面的语句即可 yum -y install ncurses-devel 如果上述命令的结果是no package,则使用下面的命令安装 apt-get install libncurses5-dev 再删除一下CMAKE的缓存配置文件 rm CMakeCache.txt 编译安装 mysql 5.5,运行 cmake报错Curses library not found

mysql:执行LOAD DATA LOCAL 报错

mysql:执行LOAD DATA LOCAL 报错. 我使用navicat for mysql 连接 mysql服务器执行local 可以正常执行 . show VARIABLES like  '%local%infile%'结果如下:+---------------+-------+| Variable_name | Value |+---------------+-------+| local_infile  | ON    | +---------------+-------+1 row

native 链接 mysql 8.0以上版本 报错2059

MySQL版本是8.0.4  由于新版本的MySQL新特性导致的. mysql> select Host,User,plugin from mysql.user; +-----------+------------------+-----------------------+ | Host | User | plugin | +-----------+------------------+-----------------------+ | localhost | mysql.infoschem

mysql 修改列为not null报错Invalid use of NULL value

场景:mysql 给表新增parent_id列,并设置为not null,保存时报错Invalid use of NULL value. 报错原因:因为已存在的数据的parent_id列为null,与not null的设置冲突. 解决办法:新增parent_id列后,先update已存在数据的parent_id为默认值,例如-1.然后修改该列的not null属性,保存成功. 原文地址:https://www.cnblogs.com/lxwphp/p/9055157.html

Mysql多实例进入db报错ERROR 2002

今天做了mysql多实例实验, 进入3307没问题 进入3306: 进入: mysql -S /data/3306/mysql.sock报错: ERROR 2002 (HY000):Can't connect to local MySQL server 解决: 1. kill 33934 kill 34228 2, 我把启动脚本mysql中的密码去掉了 我把启动脚本mysql 统统chmod +x处理(之前是700) 3,重启 mysqld_safe --defaults-file=/data/