处理续集迁移和初始化的工作流程?

Posted

技术标签:

【中文标题】处理续集迁移和初始化的工作流程?【英文标题】:Workflow for handling sequelize migrations and initialization? 【发布时间】:2020-01-20 00:30:54 【问题描述】:

我不明白 sequelize 迁移工作流程的工作原理。我有一个新建项目,数据库是使用 SQL 脚本设计的。之后我们使用sequelize auto 生成模型。

我现在需要生成一个迁移文件,这样我就可以运行 CLI 来运行 SQL 查询,从而为本地配置的数据库创建带有列等的新表。

没有第三方工具 afaik 可以将我拥有的 SQL 脚本转换为 Sequelize 迁移文件。我必须为 60 个表手动执行此操作。有一种自动创建它的脚本方法,但它使用了一种单独的格式,该格式不具有用于撤消迁移的向后兼容性(sequelize-auto-migrations)。

当我在我的文件中更新 sequelize 模型架构时,没有一个单独的命令可以通过基于上次迁移执行运行的差异机制使迁移文件与这些更改同步。

这意味着我必须修改模型,并修改迁移文件,从而导致潜在的人为错误和重复的冗余工作。

所以我的问题是

    sequelize 有办法初始化第一个迁移文件吗? 当我在 sequelize 中修改模型并根据某些差异机制自动生成新的迁移文件时,是否有可以使用的工具?

【问题讨论】:

【参考方案1】:

好吧,我知道了

对于第 1 步,您可以运行 queryInterface.sequelize.query(<query>) 并获取 SQL 脚本/在 sequelize 中直接运行它们以进行初始化。 https://sequelize.org/master/class/lib/query-interface.js~QueryInterface.html。这段简短的代码引用了 sql 脚本作为第一次迁移

对于第 2 步,您可以手动修改文件并更新迁移,然后运行 ​​sequelize-auto 从远程/本地数据库中提取最新更改

【讨论】:

以上是关于处理续集迁移和初始化的工作流程?的主要内容,如果未能解决你的问题,请参考以下文章

在heroku中续集迁移

2018.7.19 AK22 续集

续集数据库迁移问题[重复]

续集迁移未运行

将迁移更改列续集为 FK,然后撤消失败

数据库迁移(分享十一续集)