Google Cloud Spanner - 无法使用 REST API 创建 table
Google Cloud Spanner - Unable to create table with REST API
我正在尝试使用 REST API 在 Cloud Spanner 数据库中远程创建 table。我尝试 运行 的 SQL 是:
CREATE TABLE test (id INT64 NOT NULL) PRIMARY KEY (id)
我最初尝试使用 executeSql 端点,结果得到了一条不太有用的错误消息:
Syntax error: Expected \")\" or \",\" but got keyword NOT [at 1:29]\nCREATE TABLE test (id INT64 NOT NULL) PRIMARY KEY (id)\n
一段时间后,我发现了 updateDdl 端点,但是当我通过在语句列表中提供上述查询来尝试此操作时,我只得到一个空的 200 响应,并且没有创建 table。
如何使用 SQL 在 Cloud Spanner 上创建 table?
更新
事实证明我做的一切都是正确的,除了我的代码中的错误意味着我没有发送 PATCH 请求,而是发送了 GET 请求!在这种情况下,Spanner 没有返回 405,而是愉快地 returns 返回 200,但什么都不做 :(
尝试运行
CREATE TABLE Tests (
TestId INT64 NOT NULL,
) PRIMARY KEY(TestId);
updateDdl 是正确的方法调用。请注意,对于 200 响应,它将 return 一个长 运行 操作,因为架构更改不是即时的:
The returned long-running operation will have a name of the format
/operations/ and can be used to track
execution of the schema change(s). The metadata field type is
UpdateDatabaseDdlMetadata. The operation has no response.
看起来 REST API 排除了末尾的分号:
PATCH https://spanner.googleapis.com/v1/projects/YOUR_PROJECT/instances/YOUR_INSTANCE/databases/YOUR_DATABASE/ddl
{
"statements": [
"CREATE TABLE Tests (TestId INT64 NOT NULL,) PRIMARY KEY(TestId)"
]
}
您还可以通过 Cloud Console 中的 UI 创建模式。
我正在尝试使用 REST API 在 Cloud Spanner 数据库中远程创建 table。我尝试 运行 的 SQL 是:
CREATE TABLE test (id INT64 NOT NULL) PRIMARY KEY (id)
我最初尝试使用 executeSql 端点,结果得到了一条不太有用的错误消息:
Syntax error: Expected \")\" or \",\" but got keyword NOT [at 1:29]\nCREATE TABLE test (id INT64 NOT NULL) PRIMARY KEY (id)\n
一段时间后,我发现了 updateDdl 端点,但是当我通过在语句列表中提供上述查询来尝试此操作时,我只得到一个空的 200 响应,并且没有创建 table。
如何使用 SQL 在 Cloud Spanner 上创建 table?
更新
事实证明我做的一切都是正确的,除了我的代码中的错误意味着我没有发送 PATCH 请求,而是发送了 GET 请求!在这种情况下,Spanner 没有返回 405,而是愉快地 returns 返回 200,但什么都不做 :(
尝试运行
CREATE TABLE Tests (
TestId INT64 NOT NULL,
) PRIMARY KEY(TestId);
updateDdl 是正确的方法调用。请注意,对于 200 响应,它将 return 一个长 运行 操作,因为架构更改不是即时的:
The returned long-running operation will have a name of the format /operations/ and can be used to track execution of the schema change(s). The metadata field type is UpdateDatabaseDdlMetadata. The operation has no response.
看起来 REST API 排除了末尾的分号:
PATCH https://spanner.googleapis.com/v1/projects/YOUR_PROJECT/instances/YOUR_INSTANCE/databases/YOUR_DATABASE/ddl
{
"statements": [
"CREATE TABLE Tests (TestId INT64 NOT NULL,) PRIMARY KEY(TestId)"
]
}
您还可以通过 Cloud Console 中的 UI 创建模式。