无法使用 'gcloud spanner databases ddl update' 命令执行 Spanner DDL 脚本
Cannot execute a Spanner DDL script using 'gcloud spanner databases ddl update' command
A Google Spanner DDL 脚本在 Spanner 控制台中提交时成功运行,但是当使用“--ddl-file”参数通过“glcoud spanner databases ddl 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 databases ddl update test-db
--instance=test-instance
--ddl-file=table.ddl
cat table.ddl
创建 TABLE 个地区
(
region_id 字符串 (2) 不为空,
名称字符串(13)不为空,
) 主键 (region_id);
互联网上只有一处提到了这种相同的情况。有没有人得到成功工作的“ddl-file”参数?
问题(很可能)是由您的 DDL 脚本中的最后一个分号引起的。似乎 --ddl-file
选项接受具有多个 DDL 语句的脚本,这些语句可以用分号分隔 (;
),但最后一个语句不应该以分号结束。这样做会导致 gcloud
在最后一个 DDL 语句之后尝试解析另一个 DDL 语句,结果只确定有 none,从而抛出 Unexpected end of file
错误。
所以 TLDR:删除脚本中的最后一个分号,它应该可以工作。
A Google Spanner DDL 脚本在 Spanner 控制台中提交时成功运行,但是当使用“--ddl-file”参数通过“glcoud spanner databases ddl 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 databases ddl update test-db
--instance=test-instance
--ddl-file=table.ddl
cat table.ddl
创建 TABLE 个地区 ( region_id 字符串 (2) 不为空, 名称字符串(13)不为空, ) 主键 (region_id);
互联网上只有一处提到了这种相同的情况。有没有人得到成功工作的“ddl-file”参数?
问题(很可能)是由您的 DDL 脚本中的最后一个分号引起的。似乎 --ddl-file
选项接受具有多个 DDL 语句的脚本,这些语句可以用分号分隔 (;
),但最后一个语句不应该以分号结束。这样做会导致 gcloud
在最后一个 DDL 语句之后尝试解析另一个 DDL 语句,结果只确定有 none,从而抛出 Unexpected end of file
错误。
所以 TLDR:删除脚本中的最后一个分号,它应该可以工作。