You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何控制db-migrate与db-migrate-pg的迁移执行顺序及指定迁移文件?

如何用db-migrate单独运行特定迁移或指定顺序执行迁移

先澄清官方命令的误区

你看到的db-migrate up 20150207135259-myFancyMigration命令,并不是单独执行这个迁移文件——它的实际作用是把数据库迁移到该文件对应的版本,所以会自动跑完所有没执行过、版本号比它早的迁移,这就是为啥会连带执行之前所有迁移的原因。

靠谱的优雅解决方案

1. 单独运行单个迁移文件

  • 临时目录法(推荐):

    1. 建个临时目录,比如./temp-mig
    2. 把要单独跑的迁移文件复制进去
    3. 执行命令:
      db-migrate up --migrations-dir ./temp-mig
      

    这个方法不用改原文件或数据库,安全独立,完全不会影响其他迁移的执行状态。

  • 手动标记前置迁移(谨慎用):
    db-migrate会在数据库里建个migrations表记录执行状态。如果实在要单独跑某个迁移,可以手动给它之前的所有迁移在这个表里插记录,标记为已完成。之后再执行db-migrate up 目标文件名,就只会跑这个目标迁移。注意:操作数据库前一定要备份,别搞乱数据。

2. 指定顺序执行迁移

  • 自定义文件名前缀代替时间戳:
    把默认的时间戳前缀改成数字序号,比如001-init-db.js、002-add-user-table.js,db-migrate默认会按文件名排序执行,这样就能完全控制执行顺序。

  • 分阶段指定版本执行:
    先执行到某个中间版本,再执行下一批,比如:

    # 先执行到001的迁移
    db-migrate up 001-init-db
    # 再执行003的迁移(跳过002)
    db-migrate up 003-add-order-table
    

    这种方式适合需要跳过某些迁移、按自定义顺序执行的场景。

内容的提问来源于stack exchange,提问作者Sunny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 04:55:23