mongodb - 连接到 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
有什么线索吗?
解决方案
我遇到了同样的问题,但如果解决了。
我不确定你是否得到了修复,但我会把它放在这里,以防有人会遇到同样的问题。我通过不使用"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 的人有用。
推荐阅读
- python - 如何检查重复行中的目标变量是否不同
- flutter - 当我弹回前一个屏幕时,FadeInImage 小部件“淡入”
- python - 如何按该元素的大小重复列表中的元素的次数
- domain-driven-design - 管理聚合边界 (DDD)
- c++ - ld:架构 arm64 的 24 个重复符号?
- macos - 有没有办法使用 SwiftUI 检索 macOS 中文件和文件夹的图标图像?
- mysql - MySQL从多列中选择但返回一行
- java - 如何找到 bazel 错误工作进程未返回 WorkResponse 的根本原因?
- android - Firestore 无效的文档参考。文档引用必须有偶数个段,但 ... 有 3
- kotlin - 如何解决 Kotlin 中长度为 7 的索引 7 越界?