我手动删除了迁移文件名20171125081136-create-task.js
。
删除迁移文件后,我运行了此命令
db:migrate:undo:all
运行此命令时,终端出现错误:
ERROR: Unable to find migration: 20171125081136-create-task.js
。
由于此错误,我被卡住了,无法撤消存在的其他迁移文件。
答案 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()
}
};
如果要删除迁移,请继续:
node_modules/.bin/sequelize db:migrate:undo
答案 1 :(得分:3)
我遇到了同样的问题,这就是我的解决方法:
Sequelize将迁移历史记录存储在单独的表中,例如“ SequelizeMeta”。如果删除迁移文件并且以后不想再使用它,则可以从SequelizeMeta表中删除与您的迁移文件相对应的迁移行。
希望有帮助!
答案 2 :(得分:0)
我可以解决同样的问题,但找到了出路。 当我们使用 sequelize 创建迁移时,它会在数据库中创建一个 SequelizeMeta 表。所以你能做的就是。
select * from SequelizeMeta
- 这将为您提供所有迁移的列表。delete from table_name [where clause]
解决了我的问题,希望也能解决你的问题。 快乐编码。