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

Mongock报错‘Wrong parameter [ClientSession]. Dependency not found’求解

解决Mongock MongoDB Sync示例中Client Session参数问题

1. 核对ChangeUnit方法参数规范

确保你的@Execution方法参数包含ClientSession,且导入的是MongoDB官方的com.mongodb.client.ClientSession类,示例代码参考:

@Execution
public void execute(ClientSession session, MongoDatabase database) {
    // 迁移逻辑中使用session操作数据库,以支持事务
}

2. 开启Mongock事务支持配置

要让Mongock注入Client Session,必须在配置中启用事务:

  • Spring环境:在MongockSpringConfiguration或自定义配置类中调用setTransactionEnabled(true)
  • 非Spring独立环境:在MongockStandalone构建器中执行enableTransactions()

3. 确认MongoDB环境的事务兼容性

MongoDB事务仅支持副本集或分片集群,单节点(standalone)默认不支持事务。如果你的MongoDB是单节点运行,即使配置了事务,Mongock也不会注入Client Session,此时方法中声明该参数会直接报错。解决方式二选一:

  • 切换到MongoDB副本集环境
  • 移除ClientSession参数(无需事务场景)

4. 校验依赖版本兼容性

确保mongodb-driver-sync与Mongock版本匹配,避免依赖冲突。Maven依赖示例:

<dependency>
    <groupId>io.mongock</groupId>
    <artifactId>mongodb-sync-v3-driver</artifactId>
    <version>5.x.x</version>
</dependency>
<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver-sync</artifactId>
    <version>3.x.x</version>
</dependency>

5. 定位报错信息核心指向

针对具体报错栈重点排查:

  • 是否为参数注入失败:比如提示找不到ClientSession类型的Bean(Spring环境)
  • 是否为事务不支持警告:Mongock会在日志中明确输出事务不可用的原因
  • 是否为方法签名错误:Mongock要求ClientSession参数必须放在MongoDatabase/MongoCollection之前

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 19:14:53