私は現在、Sequelizeの移行の使い方を学んでいます。したがって、いくつかのサンプル・モデルを作成し、それらをマイグレーションしました。いいえ、列を削除しようとしました - データが挿入されていない限り、移行は正常に機能します。あまりにも、Mの関係:Sequelize Migrationsで関連レコードを削除せずにキー以外の列を削除するにはどうすればよいですか?
Model1 {id:int, name:string, description:string, fk_model2:int {references Model2:id} }
Model2 {id:int, name:string, description:string, test:string}
Model1toModel2 {id_model1:int, id_model2:int} //not a real model but a table
が1あり:nは関係 MODEL1 間とモデル2、そしてnだからここ
は私の例のモデルです。 n:m関係は、データベースで表を使用して表され、独自の移行によって作成されます。
今、この問題があります:(示すように) 私はテーブルモデル2にテストという名前の列を定義しました。サンプルデータを挿入した後、移行を実行しようとしましたが、この列は削除されます。テーブルモデル2でこれはうまく動作します。
最初の試み:移行ファイルにテーブルを作成するときに、私はMODEL1テーブルにfk_model2 - カラムにonUpdate: 'cascade', onDelete: 'cascade'
を使用。 したがって、削除列の移行では、モデル1テーブルと、n:m関係用に作成されたモデル1モデル2テーブルが空になりました。それは私が望むものではありません。
2回目:onUpdate: 'cascade', onDelete: 'restrict'
を使用しました。これは私がERROR: SQLITE_CONSTRAINT: FOREIGN KEY constraint failed
を今私は今モデル2 - モデル1で使用されているデータを削除することはできませんと私を与える。また、これは私が望むものではありません。
質問:テーブルを移行すると、レコード全体が削除され、移行ファイルで定義された新しい条件に従って再作成されますか? - ON DELETE
- コンディションが鳴っていますか?
は、どのように私はそれだけでテーブルMODEL1とModel1toModel2に触れることなく、キー値ではなく、列テストを削除することを実現するだろうか? NULL
またはDEFAULT
を設定するMODEL1 N に:モデル2におけるキー(&ため、レコード全体)が削除された場合(もちろん、私はのレコードModel1toModel2はあまりにも、削除、および1になりたいです。)