功能简介
Migration API 可创建 AppBase/Appwrite、Firebase、Supabase、NHost 或 CSV 迁移任务,并提供列表、详情、失败重试和删除。来源是否可用取决于实例配置、外部网络、源系统 Credential 和目标 Project 配额。
当前支持范围
- 项目数据迁移(SUPPORTED):通过受鉴权的 Migration API 导入 Appwrite、Firebase、Supabase、NHost 或 CSV 数据,并查询、重试和删除迁移任务;可用来源取决于实例配置。
适用场景
- 把用户、数据库、文件等受支持资源迁入 Project。
- 用 CSV 导入/导出 Table 数据。
- 查询异步任务状态并针对失败任务重试。
前置条件
- 已备份源系统和目标 Project。
- 使用只满足迁移范围的临时 Credential。
- 实例 Migration Worker、队列、存储和外部网络可用。
Console 操作路径
Console → Project → Settings → Migrations。选择来源、资源范围并在受保护表单输入 Credential;提交后查看任务状态和报告。完成后轮换或撤销源系统 Credential。
SDK 示例
SDK · TypeScript
import { Client, Migrations } from 'appbase-console-sdk';
const client = new Client()
.setEndpoint('https://<APPBASE_HOST>/v1')
.setProject('<PROJECT_ID>')
.setKey('<MIGRATION_API_KEY>');
const migrations = new Migrations(client);
const jobs = await migrations.list({ total: true });
const job = await migrations.get({ migrationId: '<MIGRATION_ID>' });
void [jobs, job];REST 示例
REST · Bash
curl 'https://<APPBASE_HOST>/v1/migrations/<MIGRATION_ID>' \
-H 'X-Appwrite-Project: <PROJECT_ID>' \
-H 'X-Appwrite-Key: <MIGRATION_API_KEY>'常见错误
| 现象 | 处理建议 |
|---|---|
| Migration failed | 读取报告,区分源认证、网络、配额、数据校验和目标冲突。 |
| 重复资源 | 根据任务报告决定跳过、清理或使用受支持重试,不盲目重放。 |
| Source unavailable | 检查外部网络、源 endpoint 与临时 Credential。 |
| Worker/queue unavailable | 保留基础设施错误,修复环境后再重试。 |
当前限制
- 来源和资源类型不是所有组合都支持。
- 迁移不自动验证应用语义、索引性能或所有外部依赖。
- 内部平台 Schema Migration、Registry、Pool Init 和 Runbook 不属于公开 Project Migration。
Appwrite 兼容说明
迁移来源分类只作兼容参考;具体 API、资源与状态由 AppBase Migration Action 和 SDK 决定。
AppBase 增强说明
AppBase 在受鉴权 Project 边界内提供多来源和 CSV 任务管理,并公开状态、报告、重试与清理。
发布状态和验证 Commit
origin/main 已核验。验证 Commit:0363062a1c7ea08741975bb5ba0c3361663c9353。
权威来源文件列表
backend-candidate:app/controllers/api/migrations.phpbackend-candidate:src/Appwrite/Platform/Workers/Migrations.phpbackend-candidate:tests/e2e/Services/Migrations/MigrationsBase.phpfrontend-candidate:console/src/routes/(console)/project-[region]-[project]/settings/migrations/
Appwrite taxonomy 仅作信息架构参考:https://appwrite.io/docs/advanced/migrations。上游页面不是 AppBase 实现证据。