【发布时间】:2020-05-03 15:23:54
【问题描述】:
假设我们将来要创建这样的表:
CREATE TABLE CITY (
CITY_ID INT8 UNIQUE NOT NULL,
FOUNDATION_DATE TIMESTAMPTZ NOT NULL DEFAULT NOW(),
CITY_NAME VARCHAR NULL,
CITY_TYPE VARCHAR DEFAULT 'Unknown',
INVISIBLE BOOL NULL
);
我正在尝试创建一个proto 文件,该文件将与此表结构匹配且不冲突。但不幸的是,我很困惑,需要一些帮助。我从官方文档中发现proto3 没有在message 中指定必填和可选字段的选项。我也不知道如何在字段中指定默认值。
此时我已经描述了以下city.proto文件:
syntax = "proto3";
import "google/protobuf/timestamp.proto";
import "google/protobuf/wrappers.proto";
message City {
google.protobuf.UInt64Value city_id = 1;
google.protobuf.Timestamp foundation_date = 1;
google.protobuf.StringValue city_name = 3;
google.protobuf.StringValue city_type = 4;
google.protobuf.BoolValue invisible = 5;
}
通过protoc编译器生成go代码后,我们通常会得到一个强类型的struct。在GORM包的帮助下,我想进行自动迁移并基于这个结构创建一个表。
在我的项目中,我使用go modules。
我使用这样的命令来生成go代码:
protoc proto/city.proto -I. -I%GOPATH%/src --go_out=plugins=grpc:proto/city
不幸的是,该命令导致以下错误:
--go_out: protoc-gen-go: plugins are not supported; use 'protoc --go-grpc_out=...' to generate gRPC
go 版本:
go version go1.12.9 windows/amd64
protoc --version:
libprotoc 3.11.4
问题:
如何正确描述我们表的proto文件以及如何正确生成go代码?
【问题讨论】:
-
把这个
--go_out=plugins=grpc改成这个--go-grpc_out= -
我已经试过了。不幸的是,我看到以下错误:
--go-grpc_out: protoc-gen-go-grpc: Plugin failed with status code 1.。您还有其他想法吗?
标签: go protocol-buffers grpc proto