功能简介
提交 Schema Version 时,服务端会自动把目标结构与 active 版本比较并形成执行计划;当前没有独立、只读的 compare/preview HTTP API。Pending 流程支持幂等续跑,但 failed 版本没有 first-class retry Action,必须修正目标结构并重新提交。
当前支持范围
- Schema Version 比较(PARTIAL):提交 Schema Version 时会自动与活动结构比较并生成执行计划;当前没有独立的只读差异预览接口。
- Schema Version 重试(PARTIAL):待处理版本支持幂等续跑;失败版本需要修正目标结构后重新提交,当前没有独立 Retry 接口。
适用场景
- 理解提交前后何时发生差异计算。
- 设计失败版本的人工修正与重新提交流程。
- 避免前端伪造不存在的 Compare 或 Retry 按钮。
前置条件
- 已阅读 Schema Version 创建与回滚页。
- 能读取版本状态和失败信息。
- 具备提交新版本的数据库写权限。
Console 操作路径
Console → Project → Databases → Database → Schema Versions 可查看状态与错误。当前页面不得展示独立 Compare Preview 或 Retry Action;失败后回到目标 Schema 编辑流程并创建新版本。
SDK 示例
SDK · TypeScript
import { Client, TablesDB } from 'appbase-console-sdk';
const client = new Client()
.setEndpoint('https://<APPBASE_HOST>/v1')
.setProject('<PROJECT_ID>')
.setKey('<API_KEY>');
const tables = new TablesDB(client);
const failed = await tables.getSchemaVersion({
databaseId: '<DATABASE_ID>',
versionId: '<FAILED_VERSION_ID>'
});
// 修正 schema 后创建新版本;没有 retrySchemaVersion 方法。
const replacement = await tables.createSchemaVersion({
databaseId: '<DATABASE_ID>',
schema: { tables: [] }
});
void [failed, replacement];REST 示例
REST · Bash
# 查询失败版本;修正后再次 POST /schema/versions。
curl 'https://<APPBASE_HOST>/v1/tablesdb/<DATABASE_ID>/schema/versions/<VERSION_ID>' \
-H 'X-Appwrite-Project: <PROJECT_ID>' \
-H 'X-Appwrite-Key: <API_KEY>'常见错误
| 现象 | 处理建议 |
|---|---|
| 找不到 compare endpoint | 这是当前已知边界;差异在 createSchemaVersion 内部计算。 |
| 找不到 retry endpoint | 这是当前已知边界;修正 schema 后创建新版本。 |
| 重复提交返回已有状态 | 按响应的幂等语义观察当前版本,不要并发提交不同目标。 |
当前限制
- 没有独立只读差异预览接口。
- 没有 first-class retry HTTP Action 或 SDK 方法。
- 内部 Schema repair、migration runner 与 stuck cleanup 不属于公开能力。
Appwrite 兼容说明
不得从上游 Schema 文档推导 AppBase 比较或重试 API;本页只描述代码中已存在的自动 diff 与提交边界。
AppBase 增强说明
增强体现在自动差异计算、状态持久化和幂等处理;缺失的 Compare Preview 与 Retry 被明确标为 PARTIAL。
发布状态和验证 Commit
origin/main 条件支持。验证 Commit:0363062a1c7ea08741975bb5ba0c3361663c9353;使用前必须同时满足本页“当前限制”。
权威来源文件列表
backend-candidate:src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Schema/CreateVersion.phpbackend-candidate:src/Appwrite/Platform/Modules/Databases/Schema/SchemaDiffer.phpbackend-candidate:src/Appwrite/Platform/Modules/Databases/Schema/SchemaVersionService.phpbackend-candidate:tests/e2e/Services/TablesDB/TablesDBSchemaVersioningTest.phpnegative-evidence:未发现 first-class retry HTTP actionnegative-evidence:未发现独立的只读 compare 或 preview HTTP API
Appwrite taxonomy 仅作信息架构参考:https://appwrite.io/docs/products/databases。上游页面不是 AppBase 实现证据。