首页 >后端开发 >Golang >为什么我的 Go 应用程序无法连接到 Ubuntu 上的 MongoDB 云数据库?

为什么我的 Go 应用程序无法连接到 Ubuntu 上的 MongoDB 云数据库?

Susan Sarandon
Susan Sarandon原创
2024-11-26 06:36:11472浏览

Why Can't My Go Application Connect to My MongoDB Cloud Database on Ubuntu?

在 Ubuntu 上的 Go 中连接到 Mongo 云数据库时出错

问题

尝试时使用以下命令连接到 Ubuntu 上 Go 中的 Mongo Cloud 数据库代码:

func connectToDataBase() {
    ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second)
    defer cancel()
    client, err := mongo.Connect(ctx, options.Client().ApplyURI(dbURL))
    if err != nil {
        log.Fatal("Error connecting to Database: ", err.Error())
    }
    DB = client.Database("storyfactory")
}

出现错误消息:

2019/04/13 00:20:37 Error connecting to Database: error parsing uri (mongodb+srv://User:[email protected]/test?retryWrites=true): lookup cluster0-gpxjk.gcp.mongodb.net on 127.0.0.53:53: cannot unmarshal DNS message
exit status 1

解决方案

此问题与 Go MongoDB 驱动程序没有直接关系,而是相反,Go 版本 1.11.x #10622 中的更改收紧了 SRV 记录的读取方式,如下RFC-2782。

如果权威 DNS 服务器使用域名压缩发送 SRV 记录,则 net.lookupSRV() 函数会抛出错误,并显示消息“无法解组 DNS 消息”。

要解决此问题,请考虑以下解决方法:

  • 使用非 SRV MongoDB URI: 这涉及在 URI 中手动指定数据库的主机和端口,而不是使用 SRV 记录。
  • 更新 /etc/resolv.conf: 将名称服务器替换为兼容的和/或公共 DNS 服务器,例如 1.1.1.1 或8.8.8.8.

有关更多信息,请参阅 GODRIVER-829。

以上是为什么我的 Go 应用程序无法连接到 Ubuntu 上的 MongoDB 云数据库?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn