用途:在 Convex 中做破坏性架构变更时,安全地迁移 schema 与数据,覆盖新增必填字段、修改字段类型或结构、拆分或合并表、重命名或删除字段、从嵌套数据迁移到关系型数据等场景。若为无历史数据的全新 schema、新增可选字段无需回填、新增无数据表、增删索引且无正确性顾虑,或仅咨询 schema 设计,则不需要本技能。
核心能力与流程:Convex 不允许部署与现有数据不匹配的 schema,因此迁移遵循“扩宽—迁移—收窄”:先让 schema 同时兼容新旧格式并让代码读写兼容,部署后回填数据,最后收窄 schema 并清理旧格式代码。迁移在线进行,应用需在窗口期同时处理新旧数据。优先新增字段而非改类型,优先废弃字段而非删除。
使用方式:非平凡迁移使用 @convex-dev/migrations 组件,它负责批处理、游标分页、状态跟踪、失败恢复、试运行与进度监控;安装与用法见 references/migrations-component.md。常见模式(加必填字段、删字段、改类型、拆表、清理孤儿文档、零停机双写双读、小表快捷方式、验证完成)见 references/migration-patterns.md。
限制与注意:不要在迁移前把字段设为必填;大表避免 .collect();迁移前未写新格式会遗漏窗口期数据;跳过 dryRun 可能误改生产数据;不要过早删除字段;不要用 crons 做迁移批次。资料未提供具体安装命令与价格信息。