如何为单个文件运行Sequelize下迁移

时间:2018-06-26 17:58:23

标签: sql postgresql sequelize.js sequelize-cli

我正在使用Sequelize进行迁移。如果迁移up方法引发错误,则迁移未完成就不会记录在数据库中。因此,如果我运行db:migrate:undo,它将在先前(且正在运行)的迁移上运行down。结果,我执行了一半的迁移,该迁移的模式保留在数据库中,因为相应的down方法从未由Sequelize运行。因此,我需要以某种方式强制运行单个down方法(我看不到该方法的选项)。或者,每次运行失败的迁移时,我都需要手动清理数据库,这对于我经常经历反复试验的复杂迁移而言,确实是一个痛苦。有没有更简单的方法可以做到这一点?

4 个答案:

答案 0 :(得分:1)

sequelize db:migrate:undo --name 20200409091823-example_table.js

使用此操作撤消任何特定的迁移

答案 1 :(得分:0)

到目前为止,尚无办法... Sequelize cli repo

中对此有一个未解决的问题

答案 2 :(得分:0)

手动将迁移插入迁移表,以便续集认为它已经完成。

要进行验证,请在编辑表之前和之后检查迁移状态。

db:migrate:status

列为“上升”的所有事物都可以“下降”,反之亦然。

答案 3 :(得分:0)

我尝试了一些方法,对我有用:

  • 重命名您的迁移文件,并确保它按字母顺序排在首位(使其成为迁移文件中的第一个)
  • 第二个迁移文件中的注释代码
  • 运行sequelize db:migrate

这将仅运行第一个迁移文件。

别忘了取消注释您之前评论过的迁移文件