执行版本: go1.11.2
连接字符串: mongodb+srv://<username>:<pw>@<host>/test?replicaSet=<replicaSetName>&retryWrites=true&w=majority
MongoDB地图集::网络访问权限当前设置为0.0.0.0/0
MongoDB地图集::沙盒M0 MongoDB版本4.0.10
Heroku MongoDB插件:沙箱
我正在尝试使用上述连接字符串从heroku应用程序连接到MongoDB Atlas集群。这在本地工作正常,所以我知道连接字符串有效。 但是,每当该应用程序(golang应用程序)在heroku一侧启动时,都会出现以下错误。
2019/07/27 16:18:49 server selection error: server selection timeout
current topology: Type: ReplicaSetNoPrimary
Servers:
Addr: rapi0-shard-00-02-
yqd60.mongodb.net:27017, Type: Unknown, State: Connected, Average RTT:
0, Last error: connection() : x509: certificate signed by unknown
authority
Addr: rapi0-shard-00-00-
yqd60.mongodb.net:27017, Type: Unknown, State: Connected, Average RTT:
0, Last error: connection() : x509: certificate signed by unknown
authority
Addr: rapi0-shard-00-01-
yqd60.mongodb.net:27017, Type: Unknown, State: Connected, Average RTT:
0, Last error: connection() : x509: certificate signed by unknown
authority
错误似乎与TLS证书有关。我正在使用Official MongoDB Go Driver
如果这与TLS相关,为什么我在本地没有收到此错误? 我发现了这个问题,似乎与我的问题相同,但我不确定该怎么做...。Related Issue
在使用Golang从Heroku连接到MongoDB Atlas方面,还有其他人遇到过类似的问题吗?
如果您需要更多信息,请告诉我。我很茫然。我尝试了连接字符串的各种组合,但似乎没有任何效果。
答案 0 :(得分:1)
这与问题crypto/x509: root_cgo_darwin and root_nocgo_darwin omit some system certs有关。省略了钥匙串中的某些CA证书的问题。
该修复程序在Go v1.12中发布,并且还反向移植到Go v1.11.6。