기억 휘발 방지소

Sequelize에서 현재 마이그레이션 되어 있는 DB 테이블 내에 새로운 컬럼 추가하기 본문

Database/ORM

Sequelize에서 현재 마이그레이션 되어 있는 DB 테이블 내에 새로운 컬럼 추가하기

choice91 2022. 2. 17. 16:51
728x90
반응형

이미 생성된 테이블의 컬럼을 나중에 변경/추가/삭제 할 때 models 안에 있는 파일을 수정한다고 DB에 반영되지 않는다.

migration을 통해 변경해야 실제 DB에 반영된다.

그리고 migration 파일을 생성해두면 나중에 롤백할 수도 있다.

 

✔️ 추가/변경/삭제 내용 작성하기

npx sequelize migration:create --name add-column

migrations 폴더 안에 add-column 이라는 파일이 생성된다.

파일을 열어보면 내용은 다음과 같다.

"use strict";

module.exports = {
  async up(queryInterface, Sequelize) {
    /**
     * Add altering commands here.
     *
     * Example:
     * await queryInterface.createTable('users', { id: Sequelize.INTEGER });
     */
  },

  async down(queryInterface, Sequelize) {
    /**
     * Add reverting commands here.
     *
     * Example:
     * await queryInterface.dropTable('users');
     */
  },
};

up에는 migration을 통해 수정할 모델을 작성

down에는 migration을 통해 되돌릴 때 수행할 로직

 

users 테이블에 member_since 컬럼을 추가하는 코드이다.

"use strict";

module.exports = {
  async up(queryInterface, Sequelize) {
    return queryInterface.addColumn("users", "member_since", {
      type: Sequelize.DATE,
      allowNull: false,
      defaultValue: Sequelize.literal("now()"),
      comment: "가입일",
    });
    /**
     * Add altering commands here.
     *
     * Example:
     * await queryInterface.createTable('users', { id: Sequelize.INTEGER });
     */
  },

  async down(queryInterface, Sequelize) {
    /**
     * Add reverting commands here.
     *
     * Example:
     * await queryInterface.dropTable('users');
     */
  },
};

addColumn은 컬럼 추가

changeColumn은 컬럼 변경

removeColumn은 컬럼 삭제

 

✔️ DB에 적용

npx sequelize db:migrate

위에 명령어를 실행해 실제 DB에 반영하면 된다.

 

제대로 반영되었을 때 👇

728x90
반응형