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

为何Liquibase仅生成变更日志表却不创建业务表?

问题分析与解决方案

问题原因

你的Maven配置中,Liquibase执行顺序是先跑changelogSync再跑update。changelogSync的作用是将变更日志中的所有条目标记为已执行,但不会实际执行任何数据库变更。在空数据库上执行这个命令后,Liquibase会把releases.xml里的所有创建语句记录到DATABASECHANGELOG表,但不会真正创建业务表;后续执行update时,Liquibase检查到这些变更已经标记为已执行,就不会再执行创建操作。

解决步骤

1. 修改Maven配置,移除changelogSync目标

保留update即可,空数据库初始化只需要update命令,它会自动创建Liquibase跟踪表和所有业务表。修改后的插件执行配置如下:

<executions>
  <execution>
    <phase>process-resources</phase>
    <goals>
      <goal>update</goal>
    </goals>
  </execution>
</executions>

2. 清理已标记的执行记录(如果已经运行过原配置)

如果已经执行过原配置导致DATABASECHANGELOG里有了业务表的执行记录,需要先清除这些标记:

  • 方式一:直接清空数据库中的DATABASECHANGELOG表
  • 方式二:执行Liquibase的changelogSyncClear命令,清除所有已标记的执行记录:
    mvn liquibase:changelogSyncClear -P liquibase-default
    

完成以上操作后,重新运行Maven构建,Liquibase就会正常创建所有业务表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:25:25