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

升级Liquibase至4.20+后HSQLDB无法生成ChangeLog求助

Liquibase升级后Gradle生成ChangeLog无输出问题解决方案

1. 同步Gradle插件与Liquibase核心版本

Liquibase 4.20+版本开始对插件与核心库的版本匹配要求更严格,不同步升级会导致隐性兼容问题:

  • 修改build.gradle,确保插件和核心版本完全一致,示例:
    plugins {
        id 'org.liquibase.gradle' version '4.21.1'
    }
    
    dependencies {
        liquibaseRuntime 'org.liquibase:liquibase-core:4.21.1'
        liquibaseRuntime 'org.liquibase.ext:liquibase-hsql:4.21.1'
        // 其他依赖保持不变
    }
    

2. 修正生成任务的配置细节

4.20+版本调整了部分参数的默认行为,需明确指定关键配置:

  • 显式配置输出文件的绝对路径,避免相对路径解析异常;同时指定要扫描的schema(HSQLDB默认是PUBLIC):
    task generateChangelog(type: org.liquibase.gradle.tasks.GenerateChangeLog) {
        changeLogFile = file("$projectDir/src/main/resources/changelog.xml").absolutePath
        url = "jdbc:hsqldb:file:./testdb;shutdown=true"
        username = "SA"
        password = ""
        includeSchemas = ["PUBLIC"]
    }
    

3. 开启Debug日志排查隐性错误

任务日志显示成功不代表底层无异常,通过Gradle日志参数查看详细执行过程:

  • 执行任务时添加--info参数:
    ./gradlew generateChangelog --info
    
  • 重点关注日志中「schema扫描」「变更日志条目生成」相关内容,若出现「no changes detected」但数据库存在表,大概率是schema匹配错误。

4. 替换HSQLDB驱动为Liquibase适配版本

Liquibase 4.20+更新了对HSQLDB的驱动处理逻辑,使用官方扩展包替代独立驱动:

  • 在dependencies中移除单独的hsqldb依赖,改用liquibase-hsql扩展:
    // 移除该行:liquibaseRuntime 'org.hsqldb:hsqldb:2.7.1'
    liquibaseRuntime 'org.liquibase.ext:liquibase-hsql:4.21.1'
    

5. 版本拆分验证定位问题

若以上步骤无效,可拆分版本组合验证:

  • 保持插件版本为4.19.1,升级核心版本到4.21.1,观察是否能生成ChangeLog;
  • 或保持核心版本为4.19.1,升级插件版本到4.21.1,逐步缩小问题范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 13:03:17