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

如何在TypeORM中回滚指定的单个迁移?

TypeORM 单独回滚指定迁移方案

首先明确:TypeORM 官方提供的默认命令不支持直接回滚非最新的指定迁移。
官方默认的 typeorm migration:revert 命令设计逻辑为仅能按迁移执行的倒序,从最近一次成功执行的迁移开始逐次回滚,每执行一次命令回滚一个迁移,同时会自动删除数据库迁移记录表中对应的执行记录。

如果需要单独回滚指定迁移,可通过以下两种方式实现:

方案1:手动临时调整(仅推荐本地开发环境使用)

  • 先查询数据库中的迁移记录表(默认表名为 migrations,如果自定义过表名请替换为对应名称),找到你需要回滚的目标迁移的记录,同时导出所有比该迁移执行时间更晚的迁移记录作为备份
  • 从迁移记录表中临时删除所有比目标迁移更新的执行记录
  • 执行一次 typeorm migration:revert 命令,此时会回滚你指定的目标迁移
  • 将之前临时删除的更新的迁移记录重新插回迁移记录表即可

方案2:自定义迁移命令(更规范,可用于生产环境操作)

你可以基于 TypeORM 提供的 Migration API 封装自定义命令,核心实现逻辑如下:

  • 接收用户传入的迁移名称作为参数,匹配到对应的迁移文件实例
  • 直接调用该迁移实例的 down 方法执行回滚逻辑
  • 执行完成后,仅从迁移记录表中删除该指定迁移的执行记录,不改动其他迁移的执行记录

注意:单独回滚指定迁移存在数据风险,若你要回滚的迁移和后续迁移存在依赖关系(例如目标迁移创建了某个表,后续迁移修改了该表结构、或添加了关联外键),直接回滚会触发数据库约束报错。操作前务必做好全量数据备份,且先在测试环境验证整个操作流程的可行性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:57:00