NodeJS 应用程序数据库版本控制和数据迁移

Posted

技术标签:

【中文标题】NodeJS 应用程序数据库版本控制和数据迁移【英文标题】:NodeJS application database versioning and data migration 【发布时间】:2017-03-02 14:45:54 【问题描述】:

我计划使用 Postgres 作为我的数据库,并作为我的 ORM 框架作为我的 NodeJS 项目之一。我需要您关于如何在生产环境中完成数据库表更改的建议。

例如,我们使用一些数据库模式部署了版本 1 应用程序。 后来,我在第 2 版中的架构发生了变化。假设其中一张表已更改,删除了几列并添加了几列。 版本 2 中也不需要表本身之一。

在我的生产中,我有一些包含数据的数据库。当我安装我的 NodeJS 应用程序的第 2 版时,我需要保持旧数据不变并应用第 2 版的新数据库架构。

如何实现这一点,让我指出一些参考。

谢谢

【问题讨论】:

【参考方案1】:

Sequelize(或者更确切地说,sequelize-cli)有built in support for migrations。

您可以使用 Sequelize js api(例如queryInterface.dropColumn('users', 'address'))编写迁移或编写原始 SQL 并将其传递给 sequelize.query()

【讨论】:

我是否需要编写自己的脚本文件来处理这种情况。 “续集”不会自动做? 如果您安装了sequelize-cli,您可以让它为您生成迁移骨架(运行sequelize db:migration:create),然后您对其进行修改以进行所需的数据库更改——这就是您要找的吗? 是的,我想要一种使用 sequelize 数据模型自动生成迁移脚本的解决方案。你能给我一些参考页面或建议一些解决方案吗? 我明白你现在的意思了。我还想从模型定义中生成迁移,但不幸的是这是不可能的!查看***.com/questions/27835801/… 了解一些解决方法和建议

以上是关于NodeJS 应用程序数据库版本控制和数据迁移的主要内容,如果未能解决你的问题,请参考以下文章

核心数据模型版本控制和数据迁移

核心数据版本控制(轻量级迁移)问题

数据库迁移脚本和带有时间戳的版本控制

Knex 以编程方式迁移最新版本

laravel_5《数据库迁移》

关系型数据库版本控制之(Flask SQLalchemy Alembic )