You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

MongoDB Java Driver与服务器版本不兼容问题求助

解决MongoDB 2.4与Java Driver 3.6的兼容性问题

这个报错的核心原因是MongoDB服务器与Java驱动的Wire Protocol版本不匹配:MongoDB 2.4使用的Wire Protocol版本是0,而Java Driver 3.6要求连接的服务器至少支持Wire Protocol版本6,所以直接抛出了MongoIncompatibleDriverException

下面给你两种可行的解决方案,优先推荐第一种:


方案一:升级MongoDB服务器(推荐)

MongoDB 2.4是非常老旧的版本(早在2016年就停止了官方支持),存在大量未修复的安全漏洞和功能缺失,升级到受支持的版本是长远来看最稳妥的选择。具体步骤如下:

  1. 备份现有数据
    先执行数据备份,避免升级过程中数据丢失:

    mongodump --out /var/mongodb_backup/$(date +%Y%m%d)
    
  2. 卸载旧版本MongoDB
    停止MongoDB服务并彻底卸载:

    sudo service mongodb stop
    sudo apt-get purge mongodb mongodb-server mongodb-clients
    sudo apt-get autoremove
    sudo rm -rf /var/lib/mongodb
    sudo rm -rf /etc/mongodb
    
  3. 添加MongoDB官方源并安装新版本
    以安装MongoDB 5.0为例(适配大部分主流Ubuntu版本):

    • 导入官方GPG密钥:
      wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
      
    • 添加源列表:
      echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
      
      (注意:如果你的Ubuntu版本不是focal,替换成对应的版本代号,比如bionic、jammy)
    • 更新源并安装:
      sudo apt-get update
      sudo apt-get install -y mongodb-org
      
  4. 启动服务并恢复数据

    sudo systemctl start mongod
    mongorestore /var/mongodb_backup/你的备份目录
    

方案二:降级Java Driver到兼容版本

如果暂时无法升级服务器,可以将Java Driver降级到最后支持MongoDB 2.4的版本——3.2.x系列(3.3及以后的版本不再支持Wire Protocol 0)。

Maven依赖配置:

如果使用的是拆分后的驱动(mongodb-driver):

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver</artifactId>
    <version>3.2.2</version>
</dependency>

如果使用的是旧的整合式驱动(mongo-java-driver):

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>3.2.2</version>
</dependency>

Gradle依赖配置:

implementation 'org.mongodb:mongodb-driver:3.2.2'

注意:这个方案只是临时的兼容手段,MongoDB 2.4已经没有官方维护,存在安全风险,建议尽快升级服务器版本。


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

火山引擎 最新活动