この簡単なテスト コード:
return queryInterface.createTable('tadam', {id: Sequelize.INTEGER, humus: Sequelize.STRING(255)})
.then(queryInterface.sequelize.query('ALTER TABLE tadam ADD PRIMARY KEY (id)'));
次のエラーを返します。
Unhandled rejection SequelizeDatabaseError: relation "tadam" does not exist
これで、2 番目の promise (テーブルの変更に関する) が実行されるまでに、テーブルがまだ作成されていないことがわかりました。
移行内のすべてのクエリが一度に実行されるため、このテスト移行が発生した可能性があります。
return queryInterface.sequelize.query('ALTER TABLE tadam DROP CONSTRAINT tadam_pkey')
.then(queryInterface.removeIndex('tadam', 'tadam_pkey'));
そしてそれはうまくいきます。
では、テーブルの作成とPKの追加を1回の移行で実行できるように、最初のものが機能しない理由と、それをどのように実装できるかを説明できますか?