etcd之etcd使用过程中的错误(五)

1、etcd使用过程中的错误

1.1 go mod tidy拉取etcd依赖包报错的问题

错误描述:

$ go mod tidy
go: etcd1/discovery imports
        go.etcd.io/etcd/clientv3 tested by
        go.etcd.io/etcd/clientv3.test imports
        github.com/coreos/etcd/auth imports
        github.com/coreos/etcd/mvcc/backend imports
        github.com/coreos/bbolt: github.com/coreos/bbolt@v1.3.6: parsing go.mod:
        module declares its path as: go.etcd.io/bbolt
                but was required as: github.com/coreos/bbolt

原因:

由于etcd版本管理的问题,导致etcd的代码和新版本的grpc冲突,会在编译时报错。可以在go.mod里使用的

replace命令指定使用v1.26.0老版本,可以解决grpc版本的问题。

解决方法:

go mod edit -replace github.com/coreos/bbolt=go.etcd.io/bbolt@v1.3.4
go mod edit -replace google.golang.org/grpc=google.golang.org/grpc@v1.26.0

1.2 运行go代码:undefined: grpc.SupportPackageIsVersion6 和 undefined: grpc.ClientConnInterface

错误描述:

$ go run server.go
# etcd2/proto
proto/simple.pb.go:236:12: undefined: grpc.ClientConnInterface
proto/simple.pb.go:240:16: undefined: grpc.SupportPackageIsVersion6
proto/simple.pb.go:250:10: undefined: grpc.ClientConnInterface
proto/simple.pb.go:253:30: undefined: grpc.ClientConnInterface

原因:

这是由于protoc的 go语言插件protoc-gen-go与google.golang.org/grpc版本不兼容所致,因为grpc降了到了

v1.26.0,高版本protoc-gen-go编译出来的your-module.pb.go不兼容低版本的grpc,所以protoc-gen-go也要

相应降级。protoc-gen-go兼容grpc v1.26.0的最新版本是v1.3.2

解决方法:

$ go install github.com/golang/protobuf/protoc-gen-go@v1.3.2

1.3 etcd v2/v3 api http协议调用curl版本问题

使用v2接口调用会报not found或者404,此时要开启--enable-v2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值