如何连接golang中的mongodb 3.0
当我从如何连接golang中的mongodb 3.0,mongodb,go,mgo,Mongodb,Go,Mgo,当我从2.6将我的mongodb服务器升级到3.0版本时,它无法从golang使用mgo连接 我在连接字符串中添加了'authMechanism=SCRAM-SHA-1',但它仍然无法连接到服务器。我得到的错误是,SASL支持在构建期间未启用(-tags SASL)更改服务器配置: >var schema=db.system.version.findOne({“\u id”:“authSchema”}) >schema.currentVersion=3 >db.system.version.
2.6
将我的mongodb
服务器升级到3.0
版本时,它无法从golang使用mgo连接
我在连接字符串中添加了
'authMechanism=SCRAM-SHA-1'
,但它仍然无法连接到服务器。我得到的错误是,SASL支持在构建期间未启用(-tags SASL)
更改服务器配置:
>var schema=db.system.version.findOne({“\u id”:“authSchema”})
>schema.currentVersion=3
>db.system.version.save(模式)
我也有类似的问题。令人误解的是,我在网络中发现了必须包含“labix.org/v2/mgo”包的内容,尽管在官方网站(阅读时)上有更新的信息,指出至少为我工作的包“gopkg.in/mgo.v2” 我希望这能有所帮助,因为我和你的步骤相同,但没有成功,然后我更改了包参考。 此代码在我的案例中起作用:
package main
import (
"fmt"
"time"
"gopkg.in/mgo.v2"
)
//const MongoDb details
const (
hosts = "ds026491.mongolab.com:26491"
database = "messagingdb"
username = "admin"
password = "youPassword"
collection = "messages"
)
func main() {
info := &mgo.DialInfo{
Addrs: []string{hosts},
Timeout: 60 * time.Second,
Database: database,
Username: username,
Password: password,
}
session, err1 := mgo.DialWithInfo(info)
if err1 != nil {
panic(err1)
}
col := session.DB(database).C(collection)
count, err2 := col.Count()
if err2 != nil {
panic(err2)
}
fmt.Println(fmt.Sprintf("Messages count: %d", count))
}
它也在上,所以这是运行时错误还是编译器错误?运行时错误,在我重新安装mongodb服务器后就可以了。请删除mgo包并使用“-tags sasl”选项再次获取。这可以解决您当前的问题。您可能需要libsasl2 dev来创建新包<代码>获取-标签sasl labix.org/v2/mgo但是!!!在它之后,我得到
无法建立SASL会话:SASL(-4):没有可用的机制:找不到有价值的机制
请告诉我是否找到了解决方法。在我的系统中安装更多包后,客户端上出现新的错误消息,因为:服务器在SASL身份验证步骤上返回错误:身份验证失败
和服务器身份验证失败SCRAM-SHA-1身份验证失败,storedKey不匹配
这对我没有任何帮助。使用DialWithInfo时仍无法获取身份验证。我已经确认我的所有信息都是正确的,因为我能够通过另一个客户端连接到数据库。注意:我使用的是Go1.7.1