无法使用“gcloud spanner Databases ddl update”命令执行 Spanner DDL 脚本

RPa*_*yne 2 google-cloud-spanner

Google Spanner DDL 脚本在 Spanner 控制台中提交时成功运行,但当使用“--ddl-file”参数通过“glcoud spannerdatabasesddl update”命令执行时,它始终失败并出现错误:

(gcloud.spanner.databases.ddl.update)INVALID_ARGUMENT:解析 Spanner DDL 语句时出错:\n:第 1 行第 1 列出现语法错误:解析时遇到“EOF”:ddl_statement

  • '@type': type.googleapis.com/google.rpc.LocalizedMessage 区域设置: en-US 消息: |- 解析 Spanner DDL 语句时出错: : 第 1 行第 1 列出现语法错误: 解析时遇到 'EOF': ddl_statement

命令示例:

gcloud spanner 数据库 ddl 更新 test-db
--instance=test-instance
--ddl-file=table.ddl

猫表.ddl

创建表区域 (region_id STRING(2) NOT NULL, name STRING(13) NOT NULL,) PRIMARY KEY (region_id);

互联网上只有另一处提及这一相同情况。有没有人得到“ddl-file”参数来成功工作?

Knu*_*ite 5

该问题(很可能)是由 DDL 脚本中的最后一个分号引起的。该--ddl-file选项似乎接受具有多个 DDL 语句的脚本,这些语句可以用分号 ( ;) 分隔,但最后一个语句不应以分号终止。这样做会导致gcloud在最后一个 DDL 语句之后尝试解析另一个 DDL 语句,却发现没有任何 DDL 语句,从而引发错误Unexpected end of file。

所以TLDR:删除脚本中的最后一个分号,它应该可以工作。