续集力量标记迁移完成

时间:2017-07-07 14:12:25

标签: node.js sequelize.js database-migration

我在我的一个开发环境中重新创建了我的数据库,现在当我通过sequelize db:migrate运行迁移时,它尝试从第一个开始迁移。

我不想重新同步/重新创建数据库,因为在开发环境中运行迁移可确保正确编写迁移。

有没有办法强制将某些迁移标记为“已完成”?

2 个答案:

答案 0 :(得分:5)

Sequelize-cli将迁移数据存储在名为SequelizeMeta的表中。

您可以从现有数据库中复制迁移文件名,并在新环境的数据库中插入上述表格。 记录的所有迁移都将被视为已经运行。

虽然这会阻止选定的迁移运行,但这不是最好的方法。

这个元数据也可以存储在json中,虽然我不太了解它的结构。

您可以浏览文档here

答案 1 :(得分:1)

实际的操作方法如下,

有两个表sequelizemeta和SequelizeMeta(隐藏)

对于跳过或说已经进行迁移的操作是在两个表中都输入值,例如

INSERT INTO sequelizemeta (name) VALUES 
('20181019072815-roles.js'),
('20181019093229-users.js')

INSERT INTO SequelizeMeta (name) VALUES 
('20181019072815-roles.js'),
('20181019093229-users.js')

注意:SequelizeMeta是隐藏表,但我们可以查询它。

SELECT * from seerportal.SequelizeMeta