You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Liquibase为现有MySQL表添加ngram全文索引?

解决Liquibase中创建带ngram解析器的MySQL全文索引问题

因为Liquibase的标准<createIndex>标签不支持MySQL全文索引特有的WITH PARSER ngram扩展语法,直接用<sql>标签执行原生SQL语句是最靠谱的方案,完全匹配你需要的索引创建逻辑。

修改后的完整变更集如下:

<changeSet id="202210110300-add-ngram-fulltext-indexes" author="chn7d1w" dbms="mysql">
    <!-- 为REFERENCE_CHEMICAL创建带ngram解析器的全文索引 -->
    <sql>
        ALTER TABLE REFERENCE_CHEMICAL ADD FULLTEXT INDEX reference_chemical_fulltext_index (NAME, CHEMICAL_TYPE_NAME) WITH PARSER ngram;
    </sql>
    <!-- 为REFERENCE_VARIETY创建带ngram解析器的全文索引 -->
    <sql>
        ALTER TABLE REFERENCE_VARIETY ADD FULLTEXT INDEX reference_variety_fulltext_index (NAME, CROP_TYPE) WITH PARSER ngram;
    </sql>
    <!-- 为REFERENCE_FERTILIZER创建带ngram解析器的全文索引 -->
    <sql>
        ALTER TABLE REFERENCE_FERTILIZER ADD FULLTEXT INDEX reference_fertilize_fulltext_index (NAME, FERTILIZER_TYPE_NAME) WITH PARSER ngram;
    </sql>
</changeSet>

关键说明:

  • 原变更集中的三个索引名称重复(都叫reference_chemical_fulltext),这会触发MySQL报错,所以改成了你原生SQL里定义的唯一索引名。
  • dbms="mysql"属性确保这个变更集仅在MySQL数据库上执行,避免在其他数据库类型中运行出错。
  • <sql>标签可以直接执行任何数据库原生支持的SQL语句,完美覆盖Liquibase标准标签不支持的扩展语法场景。

内容的提问来源于stack exchange,提问作者Gregory Bishop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 12:21:48