我在我的一个开发环境中重新创建了我的数据库,现在当我通过sequelize db:migrate
运行迁移时,它尝试从第一个开始迁移。
我不想重新同步/重新创建数据库,因为在开发环境中运行迁移可确保正确编写迁移。
有没有办法强制将某些迁移标记为“已完成”?
答案 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