5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Sequelizeのsyncで ALTER TABLE

Last updated at Posted at 2017-10-27

SequelizeでDBのmigrationをする場合、sequelize-cliを利用するのが一般的だと思いますが、モジュールのデプロイ時(アプリケーション起動時)にmodel.sync()でカラム追加(ALTER TABLE)出来ないかなぁって思ってSequelizeのソースを眺めてたところやり方を見付けたのでメモがてら。
ちなみに、sync({force: true})だとdrop/createなのでデータが消えるためここでは無し。

以下のようにsync()のオプションにalter: trueを渡せばよい。

'use strict';

const Sequelize = require('sequelize');
const sequelize = new Sequelize(......);

sequelize
  .sync({force: false, alter: true})
  .then(....)
  .catch(....);

この方法だとsequelize.define()しているカラム全てに対してALTER TABLEが実行される事になり、sequelize.define()から削除されたカラムもdropされます。
また、この方法だとテーブルの最後にカラムが追加されるので、カラム順番を気にするような場合は素直にsequelize-cliを使いましょう。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?