首页 > 解决方案 > 连接到 Mongo Atlas 使用家庭无线但不使用电话连接

问题描述

我正在目睹一些奇怪的事情。

我有一个用 GO 编写的应用程序,但我不确定这是否相关,即使用 Mongo Atlas。当我使用家庭无线时,该应用程序可以愉快地连接到数据库。

如果我更改连接并使用手机提供的连接,同一个应用程序将无法再连接到同一个数据库。

失败的代码是这个

connString := "mongodb+srv://my_usr:my_pwd@my_cluster.mongodb.net/scopone?retryWrites=true&w=majority"
clientOptions := options.Client().ApplyURI(connString)
client, err := mongo.NewClient(clientOptions)
if err != nil {
    log.Fatal("Error creating Mongo Client", err)
}

我得到的错误是

error parsing uri: lookup my_cluster.mongodb.net on 172.20.10.1:53: cannot unmarshal DNS message

有什么线索吗?

标签: mongodbgomongodb-atlas

解决方案


我遇到了同样的问题,但如果解决了。

我不确定你是否得到了修复,但我会把它放在这里,以防有人会遇到同样的问题。我通过不使用"mongo+srv://..."连接字符串来解决这个问题。

解决方法是选择 mongo Java 驱动程序并选择版本 3.4

package main

import (
  "go.mongodb.org/mongo-driver/mongo"
)

func main () {
  ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
  defer cancel()
  client, err := mongo.Connect(ctx, options.Client().ApplyURI(
     "mongodb://<USERNAME>:<PASSWORD>@cluster0-shard-00-00.oospj.mongodb.net:27017,cluster0-shard-00-01.oospj.mongodb.net:27017,cluster0-shard-00-02.oospj.mongodb.net:27017/<DBNAME>?ssl=true&replicaSet=atlas-d5lvih-shard-0&authSource=admin&retryWrites=true&w=majority",
  ))
  if err != nil {
    log.Fatal(err)
  }
}

这对我有用,希望它对你和下一个尝试使用 mongo 和 GO 的人有用。


推荐阅读