指定WITH PARSER ngram创建带FULLTEXT索引的表失败问题排查
解决XAMPP中MariaDB不支持ngram解析器的FULLTEXT索引问题
问题场景
- 运行环境:Windows 10 + XAMPP 8.1.10,InnoDB存储引擎
- 需求目标:创建包含FULLTEXT索引的表,通过
ngram解析器实现中日韩等无空格语言的全文搜索 - 报错情况:
- 执行含
WITH PARSER ngram的建表或ALTER TABLE命令时,PHPMyAdmin返回错误:#1128 - Function 'ngram' is not defined - 移除
WITH PARSER ngram语句后,表和索引可正常创建,但无法启用ngram解析功能
- 执行含
问题根源
XAMPP 8.1.10默认集成的是MariaDB(即便界面显示为MySQL),而MariaDB暂不支持ngram全文解析器——该解析器是MySQL专属功能,专为处理中日韩这类无空格分隔的语言全文搜索设计。
解决方案
将XAMPP中的MariaDB替换为官方MySQL版本,操作步骤如下:
- 停止XAMPP所有服务,备份现有数据库文件(默认存储路径为
XAMPP/mysql/data) - 卸载XAMPP中的MariaDB组件,或下载与原XAMPP兼容的MySQL版本(推荐8.1.x系列)
- 将MySQL安装包解压至XAMPP的
mysql目录,替换原MariaDB文件 - 参考原MariaDB的
my.ini配置文件,调整MySQL的配置参数 - 启动XAMPP的MySQL服务,重新执行含
WITH PARSER ngram的SQL命令即可正常生效
示例可用SQL命令(MySQL环境)
CREATE TABLE articles ( id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, title VARCHAR(200), body TEXT, FULLTEXT (title, body) WITH PARSER ngram ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
内容的提问来源于stack exchange,提问作者RocketHog55
相关产品推荐
相关产品推荐

