如何使用 sequelize-cli 删除迁移

How to delete a migration using sequalize-cli

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

删除迁移文件后,我运行这个命令

db:migrate:undo:all

虽然 运行 此命令在终端中出现错误: ERROR: Unable to find migration: 20171125081136-create-task.js.

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

在您的情况下,您必须重新添加已删除的迁移文件,因为 Sequelize 需要它来回滚您的迁移。如果没有,您可以添加一个名为 20171125081136-create-task.js 的空白迁移文件。该文件必须有一个 down 函数,returns 一个成功的承诺。

'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. 删除最新的迁移文件

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

Sequelize 将迁移历史存储在单独的 table 中,例如 "SequelizeMeta"。如果你删除了一个迁移文件,之后不想再使用它,你可以从SequelizeMeta中移除你的迁移文件对应的迁移行table.

希望对您有所帮助!

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

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

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

我的出路是从 SequelizeMeta table 中删除一条记录。以下是我完成的步骤:

  • SELECT ALL FROM "SequelizeMeta"

SequelizeMetatable有一列name,其中包含有关您在应用程序中进行的所有迁移的记录。

  • 删除您不再需要的迁移。 DELETE FROM "SequelizeMeta" WHERE name='migration'

我希望这对某人有所帮助。