如何使用sequalize-cli删除迁移

时间:2018-11-19 10:53:13

标签: sequelize.js sequelize-cli

我手动删除了迁移文件名20171125081136-create-task.js

删除迁移文件后,我运行了此命令

db:migrate:undo:all

运行此命令时,终端出现错误: ERROR: Unable to find migration: 20171125081136-create-task.js

由于此错误,我被卡住了,无法撤消存在的其他迁移文件。

3 个答案:

答案 0 :(得分:3)

根据您的情况,您必须重新添加已删除的迁移文件,因为Sequelize要求它回滚您的迁移。如果没有,则可以添加标题为20171125081136-create-task.js的空白迁移文件。该文件必须具有down函数,该函数返回成功的Promise。

'use strict';

module.exports = {
  up: function(queryInterface, Sequelize) {
    return Promise.resolve()
  },

  down: function(queryInterface) {
    return Promise.resolve()
  }
};

如果要删除迁移,请继续:

  1. 撤消最新迁移:node_modules/.bin/sequelize db:migrate:undo
  2. 删除最新的迁移文件

答案 1 :(得分:3)

我遇到了同样的问题,这就是我的解决方法:

Sequelize将迁移历史记录存储在单独的表中,例如“ SequelizeMeta”。如果删除迁移文件并且以后不想再使用它,则可以从SequelizeMeta表中删除与您的迁移文件相对应的迁移行。

希望有帮助!

答案 2 :(得分:0)

我可以解决同样的问题,但找到了出路。 当我们使用 sequelize 创建迁移时,它会在数据库中创建一个 SequelizeMeta 表。所以你能做的就是。

  • select * from SequelizeMeta - 这将为您提供所有迁移的列表。
  • 现在选择要删除的迁移。
  • 运行查询删除 - delete from table_name [where clause]

解决了我的问题,希望也能解决你的问题。 快乐编码。