移行を使用するという考えは、移行がデータベースの王様であるということです。これらはデータベース スキーマを変更する唯一のものであり、データベース スキーマを変更する唯一の方法は、単純に移行を実行することです。
あなたの質問に答えて:
1. モデルを見て移行ファイルを自動生成する
しないでください。移行を手動で生成します。特定のテーブルの列を変更する場合は、最初に移行を生成してから、次に対応するモデルを変更します。移行はデータベースの王様です。モデルは二の次です。
2.モデルに加えられた新しい変更に基づいて移行ファイルを自動生成する
しないでください。同上。
3. 移行の SQL スクリプトを生成して、これを PROD で実行できるようにします。
しないでください。移行自体を本番環境で直接実行し、本番データベースに接続できるはずです.devで実行するのと同じようにsequelize db:migrate
. sequelize db:migrate
新しいコードを本番環境にプッシュするたびに、デプロイ スクリプトが本番データベースで自動的に実行されます。
4. 環境固有の移行 (Dev、Stage、Prod)
絶対にしないでください。すべての移行は、すべての環境で実行する必要があります。環境に関係なく、データベースには同じスキーマが必要です。
更新: 新しいブール値の列を追加するために動作する migartion の例を次に示します (アップとダウンの両方で実行):
'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')
}
};