关于Sequelize数据库迁移的问题

Question about Sequelize database migrations

我正在使用 Sequelize 作为 Postgres 数据库的 ORM。我开始学习和使用 Sequelize 迁移和播种功能。所以据我所知,迁移的主要目的是可靠地对数据库架构进行更改而不影响内部数据。我创建了第一个迁移以根据当前模式创建表。我还创建了第一个种子来用一些数据填充表格。现在我想明白: 我如何应用此迁移(以及未来的迁移)在生产(第一次)和开发中启动数据库? 理想情况下,由于这些迁移跟踪模式更改,我可以在任何环境(生产、暂存、开发)中 运行 它们,它将 create/update 该环境中的表。

下面是迁移工作原理的粗略概述。

如果您进行了迁移(npx sequelize-cli db:migrate),那么您的 table 必须有一个名为 SequelizeMeta 的 table 或类似于数据库下的名称。

// SequelizeMeta
name
xxxx-create-user-table
xxxx-update-user-table
...

您可以通过匹配那里的名称来检查应用了哪些迁移。

所以它是一个 git 数据库模式。

现在让我们回答问题。

问:如何应用此迁移(以及未来的迁移)在生产(第一次)和开发中启动数据库?

A:访问您的服务器实例(可以是 ec2 或您的本地机器)并运行迁移到那里(npx sequelize-cli db:migrate)。

通常您会针对不同的环境使用不同的数据库,例如,使用本地 MySQL 数据库进行开发,使用 AWS RDS 进行生产等。

因此,如果您有新的未完成的迁移,您应该在部署后进行迁移。 (访问服务器实例和 运行 迁移)