与 Golang 和 DGraph 的连接错误 rpc
Connection error rpc with Golang and DGraph
我正在尝试在 DGraph 数据库中进行修改,但是当我 运行 代码时,它会抛出下一个错误:
rpc error: code = Unavailable desc = connection close exit status 1
我在端口 8000 中使用带有 docker 的 dGraph,我的 golang 代码在这里:
package main
import (
"fmt"
"context"
"encoding/json"
"log"
dgo "github.com/dgraph-io/dgo"
api "github.com/dgraph-io/dgo/protos/api"
grpc "google.golang.org/grpc"
)
type Person struct {
Name string `json:"name,omitempty"`
Lastname string `json:"lastname,omitempty"`
}
func main() {
conn, err := grpc.Dial("localhost:8000", grpc.WithInsecure())
if err != nil {
log.Fatal(err)
}
defer conn.Close()
dgraphClient := dgo.NewDgraphClient(api.NewDgraphClient(conn))
p := Person {
Name: "Giovanni",
Lastname: "Mosquera Diazgranados",
}
txn := dgraphClient.NewTxn()
ctx := context.Background()
defer txn.Discard(ctx)
pb, err := json.Marshal(p)
if err != nil {
log.Fatal(err)
}
mu := &api.Mutation{
SetJson: pb,
}
res, err := txn.Mutate(ctx, mu)
if err != nil {
fmt.Println("Aqui toy")
log.Fatal(err)
} else {
fmt.Println(res)
}
}
如何解决此错误以连接我的 DGraph 并进行修改?
欢迎来到 Stack Overflow!
为了让您的代码在本地使用 docker“独立”版本的 DGraph,我必须更改两件事:
- 使用端口
9080
。容器公开了 3 个端口:8000
、8080
、9080
。使用 8080
或 8000
我得到了你提到的同样的错误。
- 使用
v2
导入。不确定您使用的是哪个版本的 DGraph 服务器 运行,因此您可能不需要这样做。但是如果你有一个新服务器,你需要这些导入:
import (
dgo "github.com/dgraph-io/dgo/v2"
api "github.com/dgraph-io/dgo/v2/protos/api"
)
Port 8000
用于 dgraph 附带的 ratel-ui。要使用 dgraph go 客户端进行突变,您需要连接到暴露的 grpc-alpha 端口,这通常位于 9080
.
我正在尝试在 DGraph 数据库中进行修改,但是当我 运行 代码时,它会抛出下一个错误:
rpc error: code = Unavailable desc = connection close exit status 1
我在端口 8000 中使用带有 docker 的 dGraph,我的 golang 代码在这里:
package main
import (
"fmt"
"context"
"encoding/json"
"log"
dgo "github.com/dgraph-io/dgo"
api "github.com/dgraph-io/dgo/protos/api"
grpc "google.golang.org/grpc"
)
type Person struct {
Name string `json:"name,omitempty"`
Lastname string `json:"lastname,omitempty"`
}
func main() {
conn, err := grpc.Dial("localhost:8000", grpc.WithInsecure())
if err != nil {
log.Fatal(err)
}
defer conn.Close()
dgraphClient := dgo.NewDgraphClient(api.NewDgraphClient(conn))
p := Person {
Name: "Giovanni",
Lastname: "Mosquera Diazgranados",
}
txn := dgraphClient.NewTxn()
ctx := context.Background()
defer txn.Discard(ctx)
pb, err := json.Marshal(p)
if err != nil {
log.Fatal(err)
}
mu := &api.Mutation{
SetJson: pb,
}
res, err := txn.Mutate(ctx, mu)
if err != nil {
fmt.Println("Aqui toy")
log.Fatal(err)
} else {
fmt.Println(res)
}
}
如何解决此错误以连接我的 DGraph 并进行修改?
欢迎来到 Stack Overflow!
为了让您的代码在本地使用 docker“独立”版本的 DGraph,我必须更改两件事:
- 使用端口
9080
。容器公开了 3 个端口:8000
、8080
、9080
。使用8080
或8000
我得到了你提到的同样的错误。 - 使用
v2
导入。不确定您使用的是哪个版本的 DGraph 服务器 运行,因此您可能不需要这样做。但是如果你有一个新服务器,你需要这些导入:
import (
dgo "github.com/dgraph-io/dgo/v2"
api "github.com/dgraph-io/dgo/v2/protos/api"
)
Port 8000
用于 dgraph 附带的 ratel-ui。要使用 dgraph go 客户端进行突变,您需要连接到暴露的 grpc-alpha 端口,这通常位于 9080
.