我无法将mongodb与golang连接。
telnet mongoHost 27017很好
ping mongoHost它很不错
MongoHost是我的 private 主机,不是docker
Mongodb版本:2.4.3
MongoDriver:1.3.2
Go版本:go版本go1.14.1 darwin / amd64
作业系统:Mac
这是我的连接代码
clientOptions := &options.ClientOptions{}
clientOptions.SetServerSelectionTimeout(4 * time.Second)
clientOptions.SetDirect(true)
clientOptions.SetAppName("tests")
clientOptions.SetHosts([]string{"mongoHost:27017"})
clientOptions.SetReadPreference(readpref.Secondary())
client, err := mongo.NewClient(clientOptions)
if err != nil {
log.Fatal(err)
}
ctx, _ := context.WithTimeout(context.Background(), 5*time.Second)
err = client.Connect(ctx)
if err != nil {
log.Fatal(err)
}
我更改了超时,但每次收到此错误时它都没有更改连接:
2020/04/12 14:06:19服务器选择错误:服务器选择超时,当前拓扑:{类型:未知,服务器:[{地址:mongoHost:27017,类型:独立,状态:已连接,平均RTT:13849652}, ]}
最佳答案
您设置的客户端设置是矛盾的。您正在建立与单个副本集成员的直接连接,或者与具有优先读取优先级的副本集建立连接。我建议将其更改为简单的内容:
client, err := mongo.NewClient(options.Client().ApplyURI("mongodb://mongoHost:27017/?replicaSet=FOOBAR"))
另请参见mongo-driver: Connect以查看有关如何连接的各种代码示例。
Mongodb版本:2.4.3
请升级您的MongoDB服务器版本。 MongoDB Go驱动程序版本的最不兼容版本是MongoDB服务器版本2.6。有关更多信息,请参见MongoDB Compatibility chart。
MongoDB v2.4于2013年(7年前)发布,当前版本为4.2。我强烈建议您升级,请参阅Upgrade MongoDB to v2.6,然后进行升级,直到满足您要求的最新版本为止。
关于mongodb - 无法将mongodb与GoLang连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61170582/