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

SpringBoot集成Flyway迁移SQLServer失败:缺少sp_getapplock的@LockMode参数

解决Flyway在SQL Server中获取应用锁失败的问题

核心问题分析

你遇到的错误Procedure or function 'sp_getapplock' expects parameter '@LockMode', which was not supplied,尽管代码中明确传入了@LockMode参数,大概率是以下几个原因导致:

  • Flyway组件版本不一致:你的flyway-core是10.1.0,但flyway-sqlserver是10.2.0,版本不匹配会引发类加载冲突或逻辑不一致,导致实际执行的SQL并非你看到的代码版本。
  • SQL Server驱动版本问题:你使用的mssql-jdbc是预览版(12.5.0.jre11-preview),预览版可能存在JDBC参数绑定的bug,导致命名参数无法正确传递给存储过程。
  • 依赖缓存残留:即使清理了.m2仓库,IDE或构建工具可能仍有缓存的旧版本类文件,导致实际运行的代码并非更新后的版本。

解决方案步骤

1. 统一所有Flyway依赖版本

将所有Flyway相关组件的版本统一为同一个稳定版(比如10.2.0),避免版本不一致带来的冲突:

<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
    <version>10.2.0</version>
</dependency>
<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-database-postgresql</artifactId>
    <version>10.2.0</version>
</dependency>
<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-database-oracle</artifactId>
    <version>10.2.0</version>
</dependency>
<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-database-sqlserver</artifactId>
    <version>10.2.0</version>
</dependency>

注意:Flyway从9.x版本开始,SQL Server的驱动artifactId已改为flyway-database-sqlserver,旧的flyway-sqlserver是过时命名,建议使用新的artifactId。

2. 更换为稳定版SQL Server JDBC驱动

移除预览版驱动,使用最新的稳定版,比如12.4.0.jre11:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>12.4.0.jre11</version>
</dependency>

3. 彻底清理构建缓存

  • 执行Maven命令强制清理并重新构建:
mvn clean install -U
  • 如果使用IDE(如IntelliJ IDEA),执行File -> Invalidate Caches...并重启IDE,确保旧的类文件被完全清除。

4. 检查Flyway配置

确认你的Spring Boot配置中没有自定义覆盖Flyway的锁相关逻辑,保持默认配置即可:

# 避免设置可能干扰锁机制的配置
# flyway.lock-type=...

验证步骤

完成上述修改后,重新启动应用,观察Flyway是否能正常创建flyway_schema_history表并执行迁移。如果仍有问题,可以开启Flyway的DEBUG日志,查看实际执行的SQL语句,确认参数是否正确传递:

logging.level.org.flywaydb=DEBUG

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:15:10