我有一台TCP服务器尝试使用go-couchbase客户端库连接到Couchbase数据库,但是我收到一条错误消息,说明我尝试访问的存储桶,名为" events&#34 ;,不存在。
当我使用Go的官方Couchbase客户端库时,一切正常。
我注意到这两个客户之间的差异是" pool"的概念。我已将此池设置为"默认"。
什么可能导致这个Go客户端没有看到我的桶?
cb, err := couchbase.Connect("http://address:port")
if err != nil {
log.Fatalf("Error connecting: %v", err)
}
cbPool, err := cb.GetPool("default")
if err != nil {
log.Fatalf("Error getting pool: %v", err)
}
cbBucket, err := cbPool.GetBucketWithAuth("events", "username", "password")
if err != nil {
log.Fatalf("Error getting bucket: %v", err)
}
答案 0 :(得分:1)
我假设您遇到某种身份验证错误。 API有点令人困惑。应该像这样调用GetBucketWithAuth:
GetBucketWithAuth(" events"," events"," password")
原因是客户端需要存储桶用户名和存储桶密码。存储桶用户名与存储桶名称相同。
有了这个说我强烈建议你使用gocb而不是go-couchbase。 gocb是官方的Couchbase go客户端,go-couchbase仅在Couchbase内部使用。事实上,许多使用go-couchbase的组件将开始使用gocb,因为这个库更容易使用并且组织得更好。