【问题标题】:Making schema changes in production environment with Sequelize with no data loss使用 Sequelize 在生产环境中进行架构更改而不会丢失数据
【发布时间】:2016-08-01 15:37:28
【问题描述】:

我正在使用Sequelize 作为我的 PostgreSQL 数据库 ORM,并且需要一些关于在不丢失数据的情况下在生产中更改架构的指示:

// model usage
var User = require('./user')
var Page = require('./page')
var Theme = require('./theme')

User.sync({
    force: true
})

Page.sync({
    force: true
})

Theme.sync({
    force: true
})

在开发中,每次我重新启动 API 服务器时都会丢失数据,因为我有 force: true。这是可以管理的,因为它是发展。 但我显然不希望在我的生产环境中使用这个,但是我该如何解决这个问题:

  1. 我有一个用户的架构:姓名、年龄等...
  2. 用户注册
  3. 然后我决定我还想捕获“电子邮件”并将其保存在用户表中。
  4. 未找到“电子邮件”列,因为 force: false 正在生产中

如何确保我的生产架构是最新的?我可以在不丢失数据的情况下进行这些架构更改吗?

我来自 Mongo 世界,这不是问题,感谢任何建议!

【问题讨论】:

    标签: postgresql sequelize.js


    【解决方案1】:

    在 SQL 世界中,迁移是必经之路。 您需要编写迁移以在表中添加电子邮件列。

    如果您使用的是 Sequelize >= 2.0.0 ,那么您可以使用它自己的迁移库:http://docs.sequelizejs.com/en/latest/docs/migrations/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-16
      • 1970-01-01
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      • 1970-01-01
      • 2013-04-04
      相关资源
      最近更新 更多