Notice
Recent Posts
Recent Comments
Link
오늘도 개발
Node.js에서 express 사용하기 - 3. dbmate로 마이그레이션하기 본문
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
'웹 프로그래밍 > Javascript' 카테고리의 다른 글
| 에러/오류 핸들링 (0) | 2022.09.28 |
|---|---|
| 자바스크립트와 비동기 프로그래밍(콜백 함수, Promise, async/await) (0) | 2022.09.27 |
| Node.js에서 express 사용하기 - 2. TypeORM으로 데이터베이스 연결하기 (0) | 2022.09.23 |
| Node.js에서 express 사용해보기 - 1. 개요(express, nodemon) (0) | 2022.09.22 |
| 자바스크립트의 실행 컨텍스트(Execution Contexts) (0) | 2022.05.25 |