我尝试使用REST API在Cloud Spanner数据库中远程创建表。我尝试运行的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响应并且没有创建表。
如何使用SQL在Cloud Spanner上创建表?
更新
事实证明我做的一切都是正确的,除了我的代码中的错误意味着我没有发送PATCH请求,我发送了一个GET请求!在这种情况下,扳手不是回到405,而是快乐地返回200,但什么都不做:(
答案 0 :(得分:2)
updateDdl是正确的方法调用。注意,如果200响应,它将返回一个长时间运行的操作,因为模式更改不是瞬时的:
返回的长时间运行操作将具有格式名称 / operations /可用于跟踪 执行架构更改。元数据字段类型是 UpdateDatabaseDdlMetadata。该操作没有响应。
看起来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中的用户界面创建架构。
答案 1 :(得分:1)
尝试运行
CREATE TABLE Tests (
TestId INT64 NOT NULL,
) PRIMARY KEY(TestId);