MongoDB报错:localhost:27017服务端wire版本4,Ruby驱动要求最低版本6
Server at (localhost:27017) reports wire version (4), but this version of the Ruby driver requires at least (6)
问题根因
该报错由MongoDB服务端和Ruby驱动版本不匹配导致:
- 服务端返回wire version 4,说明当前安装的MongoDB版本为3.4.x及更早版本
- Ruby驱动要求wire version ≥6,说明项目中使用的驱动版本仅支持MongoDB 3.6及以上版本
解决方案
可根据自身需求选择以下任意一种方案解决:
方案1:降级Ruby MongoDB驱动(无需调整数据库,适合不想迁移现有数据的场景)
修改Rails项目根目录下的Gemfile,指定兼容MongoDB 3.4的驱动版本:
- 如果使用Mongoid(Rails常用MongoDB ODM),修改对应配置为:
gem 'mongoid', '~> 7.0.5'
- 如果直接使用Mongo Ruby驱动,修改对应配置为:
gem 'mongo', '~> 2.14.0'
修改完成后执行命令更新依赖:bundle install
重启Rails服务即可验证数据库读写功能是否恢复。
方案2:升级MongoDB服务端版本(适合需要使用新版本MongoDB特性的场景)
升级前务必先备份全量数据库数据,操作步骤如下:
- 备份现有数据:
mongodump --out /自定义的备份文件存储路径 - 停止当前运行的MongoDB服务:
sudo systemctl stop mongod - 卸载旧版本MongoDB:
sudo apt remove mongodb-org* -y - 导入对应版本MongoDB的GPG密钥、添加软件源后,安装3.6及以上版本的MongoDB,例如安装4.0版本执行命令:
sudo apt install mongodb-org -y - 启动新版MongoDB服务并设置开机自启:
sudo systemctl start mongod && sudo systemctl enable mongod - 恢复之前备份的数据库数据:
mongorestore /自定义的备份文件存储路径
重启Rails服务验证数据库读写功能是否正常。
内容的提问来源于stack exchange,提问作者Jitendra Chavhan
相关产品推荐
相关产品推荐

