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

基于Spring的项目如何在无直接数据库权限的前提下解锁Liquibase锁

Liquibase无数据库修改权限解锁方案

方案1:通过Spring配置临时开启启动自动释放锁

你使用的Liquibase 4.3.1版本原生支持启动时自动释放锁的配置,不需要手动修改数据库表,操作如下:

  • 在应用的application.yml中添加如下配置:
spring:
  liquibase:
    release-locks-on-startup: true

如果使用application.properties则添加:

spring.liquibase.release-locks-on-startup=true
  • 提交配置后通过Jenkins部署启动一次,应用启动时会自动执行锁释放逻辑,成功启动后务必删除该配置,避免多实例并发部署时出现变更冲突。

方案2:在Jenkins部署流程中加入Liquibase释放锁命令

如果配置方案不生效,可以在Jenkins的应用启动步骤前新增Liquibase命令执行步骤:

  • 直接复用应用现有的数据库连接参数(地址、用户名、密码、驱动),执行命令:
liquibase release-locks
  • 该命令只会清除DATABASECHANGELOGLOCK表中的锁标记,不会修改任何业务数据,也不会改动已执行的变更记录,执行完成后再启动应用即可。

方案3:新增临时配置类强制释放锁

如果上述两种方案都无法生效,可以新增临时Spring配置类,在Liquibase初始化前强制释放锁:

import liquibase.Liquibase;
import liquibase.database.Database;
import liquibase.integration.spring.SpringLiquibase;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;

@Configuration
public class LiquibaseUnlockConfig {
    @Bean
    public SpringLiquibase liquibase(DataSource dataSource) {
        SpringLiquibase liquibase = new SpringLiquibase() {
            @Override
            protected Liquibase createLiquibase(Database database) throws Exception {
                Liquibase lb = super.createLiquibase(database);
                // 强制释放所有已存在的锁
                lb.getDatabase().getLockService().forceReleaseLock();
                return lb;
            }
        };
        liquibase.setDataSource(dataSource);
        // 替换为你项目实际的changelog路径
        liquibase.setChangeLog("classpath:db/changelog/db.changelog-master.xml");
        return liquibase;
    }
}
  • 提交该类后部署一次,成功启动后删除该配置类即可,全程不会改动业务数据。

注意事项

  • 所有方案均只会操作Liquibase自带的锁表,不会修改业务表数据,也不会重复执行已经标记为已执行的变更脚本,不会出现数据丢失问题
  • 锁释放完成后必须删除临时添加的配置、代码或者Jenkins步骤,避免多实例同时部署时出现变更并发执行的风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:15:03