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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 07:52:27