2021. 12. 14. 19:53ㆍMysql, Sequelize
Migration
모델의 데이터 형식, 컬럼 추가, 제거, 테이블 추가, 테이블 제거와 같은 운영중인 서버 에서 DB 변경 작업 시 편리하게 도와준다.
이용 방법 :
model 먼저 수정 하고 진행한다.
하나의 파일을 수정 하면서 쓰지 않고 변경이 생길 때 마다 Migration을 생성하여 이용한다.
생성
명령어 입력을 해서 migration파일을 만들면
sequelize migration:create --name 생성하는 migration 이름
타임스탬프가 적용된 .js 파일이 생성이 된다.
파일을 열어보면
module.exports = {
up: async (queryInterface, Sequelize) => {
},
down: async (queryInterface, Sequelize) => {
}
}
이 있고 up = 마이그레이션 down = 롤백 의 기능을 담당한다.
테이블 생성, 컬럼 추가 같은 디비 속성이 변경 되는 기능은 up에 작성 하고
컬럼 삭제, 전 속성으로 롤백 하는 기능은 down에 작성을 한다.
migrate 적용
변경 적용
sequelize db:migrate
변경 한 migration를 디비에 적용 시킨다.
--env 속성
속성을 주어서 개발DB, 프로덕션DB, 테스트DB 따로 따로 migration을 적용 시켜 줄 수 있다.
default로는 development 로 설정 되어 있다.
ex)
sequelize db:migrate --env development
sequelize db:migrate --env test
sequelize db:migrate --env production
롤백
--env 속성 적용 가능
sequelize db:migrate:undo
전체 롤백
--env 속성 적용 가능
모든 마이그레이션을 되돌린다.
sequelize db:migrate:undo:all
1. 테이블을 새로 만들어야 할 때
createTable() 함수를 사용
// await queryInterface.createTable(테이블명, 컬럼명:데이터(속성,옵션) ...)
await queryInterface.createTable('goodsLogs', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
userIndex: {
type: Sequelize.STRING,
allowNull: false
}
})
2. 테이블을 drop 시킬 때
dropTable() 함수 사용
//테이블 명
await queryInterface.dropTable('goodsLogs')
3. 테이블에 컬럼을 추가 할 때
addColumn() 함수 사용
//await queryInterface.addColumn(테이블명, 추가하는 컬럼명, {
// type: 컬럼 데이터 속성
// })
await queryInterface.addColumn('goodsLogs', 'test2', {
type: Sequelize.INTEGER
})
4. 테이블에 컬럼을 제거 할 때
removeColumn() 함수 사용
//await queryInterface.removeColumn(테이블명, 제거하는 컬럼 명)
await queryInterface.removeColumn('goodsLogs', 'test2')
5. 컬럼 명 변경
renameColumn() 함수 사용
//await queryInterface.renameColumn(테이블명, 컬럼 이름 변경 전 , 컬럼 이름 변경 후 )
await queryInterface.renameColumn('goodsLogs', 'test2', 'test1')
6. 컬럼 데이터 속성값 변경
changeColumn() 함수 사용
// await queryInterface.changeColumn(테이블명, 컬럼명, {
// 컬럼 데이터 속성,
// 컬럼 옵션
// })
await queryInterface.changeColumn('goodsLogs ', 'test2', {
type: Sequelize.INTEGER,
allowNull: true
})
출처 :
https://jeonghwan-kim.github.io/sequelize-migration/
https://stackoverflow.com/questions/62667269/sequelize-js-how-do-we-change-column-type-in-migration
https://stackoverflow.com/questions/55114922/change-column-name-sequilize
'Mysql, Sequelize' 카테고리의 다른 글
Sequelize DB서버 변경 (0) | 2021.02.20 |
---|---|
Sequelize 데이터 베이스 테이블 변경 (0) | 2021.02.16 |
Sequelize Mysql 연결 (Sequelize-cli Mysql2) (0) | 2020.12.13 |
Sequelize Mysql 연결 시 참고 Mysql2 (0) | 2020.12.13 |
Mysql 간단 명령어 모음 (0) | 2020.12.12 |