Flutter连接MongoDB报错:mongodb+srv协议无效的问题求助
解决MongoDart中mongodb+srv连接URL无效的问题
问题原因
你遇到的Invalid scheme错误,是因为旧版本的mongo_dart库不支持mongodb+srv://这种SRV协议格式的连接串,它仅兼容标准的mongodb://格式。
解决方案
有两种可行的解决方式,任选其一即可:
1. 改用标准mongodb连接串
登录MongoDB Atlas控制台,进入你的集群页面,选择Connect -> Connect your application,在连接选项里选择Standard connection string(不要选SRV格式),复制生成的连接串替换你代码中的URL。
替换后的代码示例:
import 'package:mongo_dart/mongo_dart.dart'; void main() async { // 替换为标准格式的连接串 var db = Db("mongodb://user:password@insalertdatabase-shard-00-00.lkxngp6.mongodb.net:27017,insalertdatabase-shard-00-01.lkxngp6.mongodb.net:27017,insalertdatabase-shard-00-02.lkxngp6.mongodb.net:27017/eventbase?ssl=true&replicaSet=atlas-lkxngp6-shard-0&authSource=admin&retryWrites=true&w=majority"); await db.open(); var collection = db.collection("event"); // 执行数据库操作 await db.close(); }
2. 升级mongo_dart到支持SRV的版本
新版mongo_dart(2.0及以上)已经支持mongodb+srv://协议,只需更新依赖即可:
- 打开项目根目录的
pubspec.yaml文件,修改mongo_dart的版本为最新稳定版:dependencies: flutter: sdk: flutter mongo_dart: ^2.1.0 # 替换为当前最新版本 - 运行
flutter pub get更新依赖,之后你的原代码无需修改即可正常使用SRV连接串。
额外注意事项
- 确保MongoDB Atlas控制台中已经将你的设备IP添加到IP白名单,否则会被拒绝连接
- 确认连接串中的用户名、密码正确,若包含特殊字符(如@、$等),需要进行URL编码
内容的提问来源于stack exchange,提问作者pyno prog
相关产品推荐
相关产品推荐

