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
반응형