跳到主要内容

tcb db pg migration up

执行本地待应用的迁移。命令生成执行计划后提交任务,并轮询至任务结束。

语法​

tcb db pg migration up -e <envId> [--dry-run] [--include-all]

参数​

参数必填说明默认值
--dry-run否仅预览执行计划,不提交执行false
--include-all否允许执行版本号早于远端最新版本的待应用迁移false
-e, --env-id <envId>是环境 ID—
--json否输出 JSON—

示例​

# 仅预览待执行 migration
tcb db pg migration up -e <envId> --dry-run

# 正常执行
tcb db pg migration up -e <envId>

# 允许 out-of-order(历史上有本地版本号早于线上最新版本时使用)
tcb db pg migration up -e <envId> --include-all

完整流程​

# 1. 首次接入:把远端历史 migration 全部拉到本地
tcb db pg migration fetch -e <envId>

# 2. 新增变更:创建一个 migration 文件并编辑
tcb db pg migration new create_orders_table
# 编辑 cloudbase/migrations/<version>_create_orders_table.sql,写入 SQL

# 3. 预览执行计划
tcb db pg migration up -e <envId> --dry-run

# 4. 实际执行
tcb db pg migration up -e <envId>

# 5. 校验状态
tcb db pg migration list -e <envId>

声明式执行​

在 cloudbaserc.json 中配置 database 字段后,可通过 tcb deploy 执行数据库迁移。

字段类型必填默认值说明
typeString是—数据库类型,目前仅支持 postgresql
migrationsString否./cloudbase/migrations迁移文件目录(相对项目目录,仅相对路径)
{
"database": {
"type": "postgresql",
"migrations": "./cloudbase/migrations"
}
}

CLI 按文件名字典序升序执行,成功执行的文件记录在 __migrations 表中,不会重复执行。字段完整说明见配置文件。

注意事项​

  • 声明式迁移不支持自动回滚,需要手动编写反向 SQL
  • migration repair --status reverted 只标记历史记录,不撤销 SQL 变更