Node.js

Node.js dbmate

김만규 2023. 10. 30. 02:53
728x90
반응형

dbmate란?

dbmate는 데이터베이스 마이그레이션 도구로, 여러 프로그래밍 언어와 프레임워크에서 독립적으로 사용할 수 있습니다. 여러 데이터베이스 시스템을 지원하며, 개발자들이 데이터베이스 구조의 버전 관리와 마이그레이션을 쉽게 처리할 수 있게 도와줍니다.

 

1.데이터베이스 마이그레이션:

  • dbmate를 사용하면 SQL 마이그레이션 파일을 생성하고, 이를 통해 데이터베이스 구조의 변경 사항을 관리할 수 있습니다. 이러한 마이그레이션 파일은 시간 순서대로 실행되어, 데이터베이스의 상태를 원하는 버전으로 바꿀 수 있습니다.

2.스키마 덤프:

  • 데이터베이스의 현재 구조를 .sql 파일로 내보내는 기능을 제공합니다. 이를 통해 초기 스키마 상태를 쉽게 저장하고 공유할 수 있습니다.

3.환경 변수 및 구성:

  • 데이터베이스 연결 정보와 같은 설정은 환경 변수를 통해 관리할 수 있어, 다양한 환경(개발, 스테이징, 프로덕션 등)에서의 사용이 용이합니다.

 

기본 사용법

1.dbmate 설치

npm install dbmate

2.마이그레이션 파일 생성

dbmate new create_users_table
  • 위의 명령은 create_users_table라는 새로운 마이그레이션 파일을 생성합니다.

 

3.마이그레이션 파일 작성

-- migrate:up
CREATE TABLE users(
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    email VARCHAR(50) NOT NULL UNIQUE,
    password VARCHAR(200) NOT NULL,
    nickname VARCHAR(50) NOT NULL,
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- migrate:down
DROP TABLE users;
  • 데이터베이스 스키마에 새로운 테이블을 추가합니다.

4.마이그레이션 실행

dbmate up
  • up 명령은 아직 실행되지 않은 모든 마이그레이션을 실행하여 데이터베이스를 최신 상태로 만듭니다.

5.마이그레이션 롤백

dbmate rollback
  • 실행된 마이그레이션을 취소합니다.

 

주위!

1.순서: 파일을 생성할 때 순서가 중요합니다. 관계가 있는 테이블을 생성할 때 참조하는 테이블이 먼저 생성되어 있어야 합니다. 예를 들어, orders 테이블이 users 테이블의 외래 키를 참조하고 있다면, users 테이블을 먼저 생성해야 합니다.

2.파일명: dbmate는 파일 이름을 기반으로 마이그레이션을 실행하므로, 파일 이름을 통해 마이그레이션의 순서를 명확하게 할 필요가 있습니다.

3.변경: 이미 마이그레이션된 파일을 임의로 수정하지 마세요. 필요한 변경 사항이 있을 경우 새로운 마이그레이션 파일을 생성하여 변경사항을 반영하는 것이 좋습니다.

4.롤백: 마이그레이션을 롤백(되돌리기)할 때도 의존성을 고려해야 합니다. 의존하는 테이블을 먼저 삭제하면 데이터베이스의 무결성 제약조건 때문에 에러가 발생할 수 있습니다.

 

728x90
반응형