2

我有一个 TCP 服务器尝试使用 go-couchbase 客户端库连接到 Couchbase 数据库,但我收到一条错误消息,指出我尝试访问的名为“events”的存储桶不存在。

当我使用 Go 的官方 Couchbase 客户端库时,一切正常。

我注意到这两个客户端之间的区别是“池”的概念。我已将此池设置为“默认”。

什么可能导致这个 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)
}
4

1 回答 1

1

我假设您遇到了某种身份验证错误。API 有点混乱。GetBucketWithAuth 应该这样调用:

GetBucketWithAuth("事件", "事件", "密码")

原因是客户端想要bucket用户名和bucket密码。存储桶用户名与存储桶名称相同。

话虽如此,我强烈建议您使用 gocb 而不是 go-couchbase。gocb 是官方的 Couchbase go 客户端,go-couchbase 仅在 Couchbase 内部使用。事实上,许多使用 go-couchbase 的组件将开始使用 gocb,因为这个库更容易使用并且组织得更好。

https://github.com/couchbase/gocb

于 2016-05-20T03:58:43.327 回答