正在导出具有 FTS 索引的 MySQL 数据库

Exporting MySQL database with FTS index

我最近在迁移 MySQL 数据库,发现了一个与 FTS 索引相关的问题。

以下是产生问题的步骤:

我使用以下命令导出了数据库:

mysqldump -p -u username database_name > export.sql

并导入:

mysql -p -u username database_name < export.sql 

接下来,我 运行 在每个需要它们的 table 上执行 FTS 索引命令:

ALTER TABLE table_name ADD FULLTEXT(colnames...)

检查这些 table 的 table 状态时,记录数是正确的。但是,index_length 与原始数据库(我们从中导出的数据库)有很大不同。

结果是 FTS 部分工作(一些字符串匹配但不是全部)。因此,如果我使用 "test" 之类的字符串执行 MATCH,它对两者都有效,但是当我使用 "hello" 之类的字符串执行 MATCH 时,它仅适用于原始数据库。

这种行为的原因可能是什么?我非常小心地确保所有 table 都添加到 FTS 索引中。 table 每个都有大约 150,000 条记录。

一直都是这样不是吗。花费数小时尝试解决问题,并在 Whosebug 上发帖后几分钟内找到答案。

所以问题出在 sql 配置文件中的 FTS 参数上。之前,我删除了停用词列表并减少了最小字长。忘记将这些参数带到新服务器。