用途:围绕 Supabase CLI 管理数据库迁移的完整生命周期,覆盖创建迁移、零停机改表、批量回填、版本管理、回滚与 TypeScript 类型生成。
主要能力:用 npx supabase migration new 生成带时间戳的 SQL 文件,migration list 查看已应用/待应用状态,db reset 在本地应用并填充数据,gen types typescript 生成类型,link 与 db push 推送到远端。零停机模式包括:Postgres 11+ 添加带默认值的可空列不锁表;用 CREATE INDEX CONCURRENTLY 建索引,并在迁移文件顶部加 -- supabase:disable-transaction;改列名或类型分两阶段(新增列、回填、同步触发器、再删旧列)。还涉及 SDK 批量回填、环境间 schema 版本对比(migration list、db diff)、三种回滚策略(补偿迁移、migration repair、功能开关)以及每次改 schema 后重新生成类型。
使用方式:需先安装 Supabase CLI(npm install -g supabase 或 npx supabase --version)、项目内安装 @supabase/supabase-js v2+、本地运行 npx supabase start,并了解 PostgreSQL DDL 与事务行为。典型流程为创建迁移、写 DDL(含 RLS、策略、索引、触发器)、本地 db reset 测试、生成类型、再 link 并 db push 到远端。
适用场景:新建迁移、无停机修改生产 schema、加列后回填历史数据、跨 dev/staging/production 管理迁移历史、回滚失败迁移、重新生成 TypeScript 类型。
限制与注意:已应用的迁移不要修改;CREATE INDEX CONCURRENTLY 不能放在事务块内;回填死锁需减小批次并加重试;大表超时可设 statement_timeout;migration repair 需用 migration list 中的准确版本号;手工在 SQL Editor 改动会造成 schema 漂移,可用 db pull 捕获。资料未提供具体收费、价格与平台支持信息。