マイグレーションを使用したアイデアは、データベースの王様であるということです。それらはデータベーススキーマを変更する唯一のものです。データベーススキーマを変更する唯一の方法は、移行を実行することです。ご質問への答えで
:
1.オートモデル
ではいけない見ることで、移行ファイルを生成します。手動で移行を生成します。特定の表の列を変更する場合は、まずマイグレーションを生成し、次に対応するモデルを変更します。移行はデータベースの第一人者です。モデルは2番目に来る。
2.自動生成移行ファイルベースの新しい変更が
にはないモデル化するために作られました。同上。
3.私たちはしないでくださいPRODに
これを実行できるように、移行のSQLスクリプトを生成します。プロダクションデータベースに接続するだけで、実稼働環境で直接マイグレーションを実行することができます。デバックで実行するのと同じように、sequelize db:migrate
で実行する必要があります。新しいコードを実稼働環境にプッシュするたびに、デプロイスクリプトは自動的に本番データベース上でsequelize db:migrate
を実行する必要があります。
4.環境固有の移行(DEV、ステージ、製品版)
は間違いありません。すべての移行はすべての環境で実行する必要があります。環境に関係なく、データベースは同じスキーマを持つ必要があります。
アップデート:ここでは、新たなブール列を追加する(両方上下実行している)作品例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')
}
};
iはsequelize移行の良いアイデアを持っていると私は今joshua.paling @本当にありがとうございました私の役割を理解する。今、私は移行をwrtingするだろう、私はそれに2つの方法を参照してください。 1. sequelize apiを使用する。2. SQLスクリプト。私は2番目のアプローチは、私はapiに反対SQLクエリを書いているようにもっとクリーンであると思う.. apiはよく私はそれらを使用して自信を持って感じることはありませんが文書化されていません..私はテーブルに列を追加したときにAPIを使用して1つの移行を試みました..しかし、私はそれを元に戻そうとしています..移行は列を削除していない..これは私にSQLクエリを考えるようになりました。これにあなたの推薦を提案してください –
理想的には、続行APIを使用する必要があります。これの主な利点は、使用しているデータベース(MySQL、Postgresなど)に関係なく、移行が機能することです。 sequelizeのAPIがあなたがやりたいことをサポートしていない場合、プレーンなSQLを書くことはOKです。カラムの更新と削除に関しては、私のために働くサンプルのmigartionで答えを更新します。 –
ありがとうございます。@ joshua.paling。私は本当にあなたのすべての努力に感謝します。私は、APIを使用して移行を書くことが今のところいたるところで、プレーンなSQLを使うべきだという事実に同意します。再度、感謝します ! :) –