我正在进行Dgraph
和Go
集成。我正在尝试访问Dgraph
中的Go
查询,为此我正在使用github.com/dgraph-io/dgo
库。
这是代码:
package main
import (
"bytes"
"context"
"fmt"
"io/ioutil"
"log"
"github.com/dgraph-io/dgo"
"github.com/dgraph-io/dgo/protos/api"
"google.golang.org/grpc"
)
func main() {
query := `{
people(func: has(name)) {
name
follows{
name
}
}
}`
conn, err := grpc.Dial("x.x.x.x:8000", grpc.WithInsecure())
if err != nil {
log.Fatal(err)
}
ctx := context.Background()
dgraphClient := dgo.NewDgraphClient(api.NewDgraphClient(conn))
txn := dgraphClient.NewTxn()
txn.Query(ctx, query)
request := &api.Request{
Query: query,
}
response, err := txn.Do(ctx, request)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(response.Json))
}
我遇到错误 rpc错误:尝试运行代码时,代码=不可用desc =连接已关闭。
由于我是Go
和DGraph Database
的新手,所以我的知识非常有限。
任何人都可以帮忙,需要进行哪些确切的更改以解决此错误。
答案 0 :(得分:1)
和你遇到同样的情况,工作一小时后,发现原因是我用了一个代理,比如export https_proxy=http://192.168.3.92:7890 http_proxy=http://192.168.3.92:7890 all_proxy=socks5://192.168.3.92:7890
,执行unset https_proxy http_proxy all_proxy
的时候,成功了!
答案 1 :(得分:0)
端口8000上的服务仅是UI。如果要使用gRPC,则必须在端口9080中调用它。绝不要8080、8000、6080等。检查此文档https://dgraph.io/docs/deploy/ports-usage/#types-of-ports
在此示例https://github.com/dgraph-io/dgo/blob/a38d5eaacbf8667cc2d6e7b40bd0978cede4000f/examples_test.go#L35
它正在使用端口9180。由于测试用群集的偏移量为100。这意味着Alpha中的所有端口都增加了100个整数。因此,Alpha中的所有端口都必须考虑偏移量。其余的API是8180,gRPC是9180。
在通常情况下,您在学习东西时就不会考虑使用偏移量。因此,您可能启动了一个普通集群。默认端口为9080。