使用 SequelizeJS 和 CLI 进行迁移
Migrations with SequelizeJS and CLI
目前,我已经开始在使用 SEQUELIZE ORM. The Sequelize does support the migrations using sequelize-cli 的 NODE JS 上工作,但文档并未解释有关如何使用迁移的所有细节。我想知道使用 Sequelize CLI 是否可以进行以下操作。考虑到 PROD 部署,以下几点很重要
- 通过查看模型自动生成迁移文件
- 根据对模型所做的新更改自动生成迁移文件
- 生成 SQL 迁移脚本,以便我们可以 运行 在 PROD
上执行此操作
- 特定于环境的迁移(开发、阶段、生产
我已经阅读了文档,但它没有解释上述任何一点。请帮助我,我
使用迁移的想法是它们是您数据库的王者。它们是唯一会更改您的数据库架构的东西,您应该更改数据库架构的唯一方法是简单地 运行 迁移。
回答您的问题:
1.通过查看模型自动生成迁移文件
不要。手动生成迁移。如果您要更改特定 table 的列,请先生成迁移,然后再修改相应的模型。迁移是数据库之王。模特次之。
2。根据对模型所做的新更改自动生成迁移文件
不要。同上
3。生成 SQL 迁移脚本,以便我们可以 运行 在 PROD
上执行此操作
不要。您应该能够 运行 直接在生产环境中进行迁移,连接到生产数据库,就像您 运行 在开发环境中使用 sequelize db:migrate
一样。每次将新代码推送到生产环境时,您的部署脚本应该自动 运行 sequelize db:migrate
在生产数据库上。
4.特定于环境的迁移(Dev、Stage、Prod)
绝对不会。每个环境中的每个迁移都应该 运行。无论环境如何,您的数据库都应该具有相同的架构。
更新:这是一个示例迁移,它可以(运行向上和向下)添加一个新的布尔列:
'use strict';
module.exports = {
up: function (queryInterface, Sequelize) {
return queryInterface.addColumn(
'my_table',
'my_new_column',
{
type: Sequelize.BOOLEAN,
}
)
},
down: function (queryInterface, Sequelize) {
return queryInterface.removeColumn('my_table', 'my_new_column')
}
};
目前,我已经开始在使用 SEQUELIZE ORM. The Sequelize does support the migrations using sequelize-cli 的 NODE JS 上工作,但文档并未解释有关如何使用迁移的所有细节。我想知道使用 Sequelize CLI 是否可以进行以下操作。考虑到 PROD 部署,以下几点很重要
- 通过查看模型自动生成迁移文件
- 根据对模型所做的新更改自动生成迁移文件
- 生成 SQL 迁移脚本,以便我们可以 运行 在 PROD 上执行此操作
- 特定于环境的迁移(开发、阶段、生产
我已经阅读了文档,但它没有解释上述任何一点。请帮助我,我
使用迁移的想法是它们是您数据库的王者。它们是唯一会更改您的数据库架构的东西,您应该更改数据库架构的唯一方法是简单地 运行 迁移。
回答您的问题:
1.通过查看模型自动生成迁移文件
不要。手动生成迁移。如果您要更改特定 table 的列,请先生成迁移,然后再修改相应的模型。迁移是数据库之王。模特次之。
2。根据对模型所做的新更改自动生成迁移文件
不要。同上
3。生成 SQL 迁移脚本,以便我们可以 运行 在 PROD
上执行此操作不要。您应该能够 运行 直接在生产环境中进行迁移,连接到生产数据库,就像您 运行 在开发环境中使用 sequelize db:migrate
一样。每次将新代码推送到生产环境时,您的部署脚本应该自动 运行 sequelize db:migrate
在生产数据库上。
4.特定于环境的迁移(Dev、Stage、Prod)
绝对不会。每个环境中的每个迁移都应该 运行。无论环境如何,您的数据库都应该具有相同的架构。
更新:这是一个示例迁移,它可以(运行向上和向下)添加一个新的布尔列:
'use strict';
module.exports = {
up: function (queryInterface, Sequelize) {
return queryInterface.addColumn(
'my_table',
'my_new_column',
{
type: Sequelize.BOOLEAN,
}
)
},
down: function (queryInterface, Sequelize) {
return queryInterface.removeColumn('my_table', 'my_new_column')
}
};