오늘도 개발

Node.js에서 express 사용하기 - 3. dbmate로 마이그레이션하기 본문

웹 프로그래밍/Javascript

Node.js에서 express 사용하기 - 3. dbmate로 마이그레이션하기

Sueeeeeee 2022. 9. 24. 21:10

1. dbmate란?

RDBMS의 테이블 스키마를 관리하는 도구.

테이블 수정 시 이력(migration 파일)을 남기므로 작업 편리.

 

2. 과정

1) dbmate 설치

// 프로젝트 폴더 경로에서 실행
npm install dbmate

2) 테이블 생성 명령어 입력 => db 폴더가 자동 생성되고 migration 파일이 생성됨 

books, authors 테이블이 먼저 존재해야 하므로 다음과 같은 순으로 명령 입력.

dbmate new create_books_table
dbmate new create_authors_table
dbmate new create_books_authors_table

3) 마이그레이션 파일(예: 2022042012345_create_books_table.sql) 열어서 sql문 입력

migrate:up은 해당 마이그레이션을 db에 적용할 때 사용할 쿼리

migrate:down은 해당 마이그레이션을 rollback할 때 사용할 쿼리, up과 반대인 동작을 작성해줄 것

-- migrate:up
CREATE TABLE books (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(100) NOT NULL,
    description VARCHAR(2000) NULL,
    cover_image VARCHAR(1000) NULL,
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- migrate:down
DROP TABLE books;

4) 마이그레이션 db에 적용 

과거 마이그레이션 파일의 migrate:up에 적힌 쿼리부터 최신 마이그레이션 파일의 migrate:up에 적힌 쿼리순으로 실행.

실행 완료 후 프로젝트의 db 폴더에 schema.sql 파일이 생성되고,

db의 schema_migrations 테이블의 version이라는 row에 적용한 마이그레이션 이름이 들어감.

dbmate up 이후 새 마이그레이션 파일을 만들고 dbmate up을 하면 새로 추가한 부분만 마이그레이션 함.

dbmate up