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年就停止了官方支持),存在大量未修复的安全漏洞和功能缺失,升级到受支持的版本是长远来看最稳妥的选择。具体步骤如下:
备份现有数据
先执行数据备份,避免升级过程中数据丢失:mongodump --out /var/mongodb_backup/$(date +%Y%m%d)卸载旧版本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添加MongoDB官方源并安装新版本
以安装MongoDB 5.0为例(适配大部分主流Ubuntu版本):- 导入官方GPG密钥:
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add - - 添加源列表:
(注意:如果你的Ubuntu版本不是focal,替换成对应的版本代号,比如bionic、jammy)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 - 更新源并安装:
sudo apt-get update sudo apt-get install -y mongodb-org
- 导入官方GPG密钥:
启动服务并恢复数据
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




