我无法连接mongodb和golang。
telnet mongoHost 27017可以了
ping mongoHost它是okey
MongoHost是我的私有主机,不是docker
Mongodb版本:2.4.3
MongoDriver:1.3.2
Go版本:go版本go1.14.1达尔文/amd 64
操作系统: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 server selection error: server selection timeout, current topology: { Type: Unknown, Servers: [{ Addr: mongoHost:27017, Type: Standalone, State: Connected, Average RTT: 13849652 }, ] }
2条答案
按热度按时间jhkqcmku1#
您设置的客户端设置相互矛盾。您要建立到单个复制集成员的直接连接,或者要建立到具有读取首选项辅助的复制集成员的连接。我建议把它改成简单的:
mongo-driver:连接以查看有关如何连接的各种代码示例。
Mongodb版本:2.4.3
请升级MongoDB服务器版本。MongoDB Go驱动程序版本的最低兼容版本是MongoDB服务器版本2.6。有关更多信息,请参阅MongoDB兼容性图表。
MongoDB v2.4发布于2013年(7年前),目前版本为4.2。我强烈建议升级,请参阅Upgrade MongoDB to v2.6,然后按照升级,直到最新的版本,满足您的要求。
2vuwiymt2#
Go mongo驱动程序不支持Mongo 2.4 https://jira.mongodb.org/browse/GODRIVER-1571