首页 新闻 会员 周边 捐助

使用my sql CONTAINS函数出错

0
悬赏园豆:5 [已解决问题] 解决于 2024-03-22 15:12

-- 数据表
DROP TABLE IF EXISTS base_sysusers;
CREATE TABLE base_sysusers (
Id int NOT NULL AUTO_INCREMENT COMMENT '主键自增Id',
UserName varchar(255) COLLATE utf8_bin NOT NULL COMMENT '用户名',
PassWord varchar(30) COLLATE utf8_bin DEFAULT NULL COMMENT '密码',
Level int DEFAULT NULL COMMENT '级别',
State tinyint DEFAULT NULL,
Parent_UserName varchar(5) COLLATE utf8_bin DEFAULT NULL COMMENT '父级名称',
CreateTime datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (Id)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;

-- 插入数据
INSERT INTO base_sysusers VALUES ('1', 'Admin', 'admin', '200', '1', 'Admin', '2021-07-09 15:17:25');
INSERT INTO base_sysusers VALUES ('2', 'Admin2', 'admin2', '200', '1', 'Admin', '2021-07-12 16:38:03');

查询数据时报错:
SELECT *
from base_sysusers
WHERE CONTAINS(UserName,'Admin');

问题补充:

网上参考地址: https://blog.csdn.net/weixin_42099755/article/details/113336497
也是这样的,不知道是什么情况,请大侠帮我看一下 mysql的问题

QFAAAAA的主页 QFAAAAA | 菜鸟二级 | 园豆:226
提问于:2021-07-12 16:47
< >
分享
最佳答案
0

你看一下你的mysql是不是 InnoDB模式,这种模式不支持contains

1.InnoDB是一个可靠的事务处理引擎,它不支持全文本搜索。
2.MEMORY在功能等同于MyISAM,但由于数据存储在内存(不是磁盘)中,速度很快(特别适合于临时表)
3.MyISAM是一个性能极高的引擎,它支持全文本搜索,但不支持事务处理。

收获园豆:5
为乐而来 | 小虾三级 |园豆:1432 | 2021-07-14 11:52
其他回答(1)
0

你可以试试UserName字段建立索引后执行查询语句

熊泽-学习中的苦与乐 | 园豆:2272 (老鸟四级) | 2021-07-12 17:09

这个和建立索引,没有关系吧,没有索引应该也能查询出数据才对的,现在的问题是不知道哪里写得不对
[SQL]SELECT *
from base_sysusers
WHERE CONTAINS(UserName,'Admin');
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(UserName,'Admin')' at line 3

支持(0) 反对(0) QFAAAAA | 园豆:226 (菜鸟二级) | 2021-07-12 17:12

@mengqiaofa:
你试试添加双引号,或者换一个字段查询看可以不
SELECT *
from base_sysusers
WHERE CONTAINS(UserName,'"Admin"');

支持(0) 反对(0) 熊泽-学习中的苦与乐 | 园豆:2272 (老鸟四级) | 2021-07-12 17:18

@熊泽-学习中的苦与乐:

执行了也是不对啊

支持(0) 反对(0) QFAAAAA | 园豆:226 (菜鸟二级) | 2021-07-12 17:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册