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