uju's Tech

[Node.js : Sequelize] SQLITE_ERROR: Cannot add a UNIQUE column - 개발 회고 본문

Node

[Node.js : Sequelize] SQLITE_ERROR: Cannot add a UNIQUE column - 개발 회고

ujusy 2020. 7. 17. 13:14

<본 포스팅은 공부목적으로 작성되었습니다. 혹시 틀린 부분이 있거나 문제가 되는 부분이 있다면 답글 달아주세요!>

 

이미 존재하는 테이블에 칼럼을 하나 추가해야하는 작업이 필요해졌다.

먼저 db 마이그레이션과 칼럼 추가를 위해

 

./node_modules/.bin/sequelize migration:generate --name [파일명]

 

을 통해 작성해준다. 


 

추가해야할 칼럼이 유니크 해야하기 때문에 unique : true로 설정해주었다.

module.exports = {
  up: async (queryInterface, Sequelize) => {
    await queryInterface.addColumn('테이블 명', '추가할 칼럼 명', {
      allowNull: true,
      defaultValue: null,
      type: Sequelize.UUID,
      unique: true,
    });
  },
  down: async (queryInterface) => {
    await queryInterface.removeColumn('테이블 명', '추가할 칼럼 명');
  },
};

 위와 같이 작성해주고 db 마이그레이션을 해보았는데..

왜인걸,,?

error가 발생했다.

 

SQLITE_ERROR: Cannot add a UNIQUE column 

 


 

해결을 어떻게 해야할까?

 

[solved]

1. addColumn으로 칼럼을 추가한다.

2. addIndex로 앞서 추가한 칼럼에 유니크 설정을 해준다.

 

1.addColumn

module.exports = {
  up: async (queryInterface, Sequelize) => {
    await queryInterface.addColumn('테이블 명', '추가할 칼럼 명', {
      allowNull: true,
      defaultValue: null,
      type: Sequelize.UUID,
    });
  },
  down: async (queryInterface) => {
    await queryInterface.removeColumn('테이블 명', '추가할 칼럼 명');
  },
};

2.migration 해주기

 

3.addIndex

module.exports = {
  up: async (queryInterface) => {
    await queryInterface.addIndex('테이블 명', ['칼럼명'], {
      unique: true,
    });
  },

  down: async (queryInterface) => {
    await queryInterface.removeIndex('테이블 명', ['칼럼명']);
  },
};

4.migration 해주기

 

sequelize-cli db:migrate

sequelize-cli db:migrate:undo

를 통해 롤백 확인하였다.

 

 

 

 

Comments