Liquibase 4.21+版本不生成变更日志,DATABASECHANGELOG表为空求助
解决方案
问题根源在于Liquibase 4.21及以上版本对SpringLiquibase的行为做了变更:从4.21版本开始,afterPropertiesSet()仅完成配置初始化,不再自动触发数据库迁移操作,而你之前的代码依赖该方法执行变更日志,因此升级后Liquibase未执行任何操作,DATABASECHANGELOG表为空。
只需在代码中显式调用migrate()方法即可解决,修改后的核心代码如下:
final SpringLiquibase liquibase = new SpringLiquibase(); liquibase.setResourceLoader(resourceLoader); liquibase.setDataSource(tenantDataSource); liquibase.setChangeLog(liquibaseProperties.getChangeLog()); liquibase.setContexts(liquibaseProperties.getContexts()); liquibase.afterPropertiesSet(); // 新增:显式触发数据库迁移 liquibase.migrate();
补充说明
- 降级到4.20及以下版本正常,是因为旧版本中
afterPropertiesSet()内部会自动调用migrate()逻辑,新版本将初始化与迁移操作拆分,需要手动触发迁移 - 该调整完全适配你的多租户运行时创建数据库的场景,每个租户数据源会独立执行变更日志
内容的提问来源于stack exchange,提问作者Rameshwar Singh
相关产品推荐
相关产品推荐

