Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- TypeScript
- JavaScript
- class
- GIT
- mongoose
- nodejs
- Dinosaur
- cookie
- Queue
- Sequelize
- nestjs
- MongoDB
- game
- flask
- 게임
- jest
- 정렬
- Express
- Bull
- MySQL
- 공룡게임
- typeORM
- OCR
- react
- 자료구조
- dfs
- Python
- AWS
- Nest.js
Archives
- Today
- Total
포시코딩
[Sequelize] 이미 생성한 테이블의 컬럼 속성 변경하기 본문
728x90
개요
Comments 테이블을 생성했는데 깜빡하고 deletedAt 컬럼에 allowNull: true를 안줘버렸다.
원래 같았으면 테이블을 삭제하고 다시 만들었을텐데
FK 설정 등 해당 테이블에 대해 진행한게 벌써 좀 많아져서
간단히 삭제하고 다시 만들 수 없는 상황이었다.
sequelize가 아니었으면 alter 써서 변경해주면 끝이었을텐데 하며
sequelize에서 지원하는 기능을 찾아봤고 다행히 존재했다.
방법
먼저 migration file을 만든다.
npx sequelize migration:generate --name change-column
만들어진 js 파일에서 아래와 같이 수정해준다.
'use strict';
/** @type {import('sequelize-cli').Migration} */
module.exports = {
async up (queryInterface, Sequelize) {
/**
* Add altering commands here.
*
* Example:
* await queryInterface.createTable('users', { id: Sequelize.INTEGER });
*/
await queryInterface.changeColumn('Comments', 'deletedAt', {
type: Sequelize.DATE,
allowNull: true
});
},
async down (queryInterface, Sequelize) {
/**
* Add reverting commands here.
*
* Example:
* await queryInterface.dropTable('users');
*/
await queryInterface.changeColumn('Comments', 'deletedAt', {
type: Sequelize.DATE,
allowNull: false,
});
}
};
up에는 변경을 적용할 내용이 들어가고, down에는 변경 전 내용이 들어가야 하는데
변경을 했다가 변경 사항을 롤백하려고 하는 경우 down이 쓰이게 된다.
아무튼 코드 설명을 더 하자면 'Comments' 테이블(DB에 있는 테이블 이름 그대로)의 'deletedAt' 컬럼에 대해
allowNull 을 변경해주는 모습이다.
이상하게 type을 같이 써주지 않으니 에러가 나면서 적용이 안되서 type도 같이 명시해주었다.
작성을 마친 후 저장한뒤에 아래 명령어를 통해 DB에 적용하여 확인해주면 변경사항이 적용된 것을 볼 수 있다.
npx sequelize db:migrate
728x90
'Node.js' 카테고리의 다른 글
[Sequelize] createdAt, updatedAt 컬럼 없는 테이블 다루기 (0) | 2022.12.22 |
---|---|
[Sequelize] migration을 이용한 Table 속성 변경 방법들 (0) | 2022.12.22 |
[Sequelize] FK(Foreign Key) 설정하기 (0) | 2022.12.21 |
[Sequelize] config 파일에서 dotenv를 읽지 못하는 문제 (0) | 2022.12.21 |
[bcrypt] Error: Invalid salt. Salt must be in the form of: $Vers$log2(NumRounds)$saltvalue (0) | 2022.12.21 |