DBmate 사용법
mySQL을 사용하여 Database를 쌓아 나갈때,
DBmate 를 사용하면
초기 세팅값을 마치 git을 저장하듯 이력을 남겨 언제든 migration 할 수 있다.
지금부터의 설명은 macOS 기준으로 기술한다. (windows가 없음 ;; )
DBmate 설치
터미널 아무 위치에서나 무관하다. 2
$brew install dbmate
이렇게 입력 후, 엔터키를 누르면 자동으로 설치가 된다.
그리고, 하나의 파일이 필요하다. 바로 .env
파일.
IDE 또는 터미널 vim으로 .env
파일을 생성한 후, 다음과 같이 입력한다.
" cat.env " 이런식으로 해도 되고, 바로 확장자부터 시작하는 파일명도 된다.
작성해야할 코드는 단 한줄!
아래와 같다.
DATABASE URL="mysql://username: [email protected]:3306/database이름"
주의사항
- username : mySQL 서버 실행시 설정했던 이름을 넣으면 되는데 보통
root
이다. - database 위치 반드시 확인!! (localhost라면 127.0.0.1:3306 이 default 값이다.)3
- 기존의 database가 있다면 database 이름을 똑같이 적어야 한다. (아니면 또다른 이름의 DB생성됨)
주소 잘못 입력하면 아래 이미지와 같은 error 메세지를 무한히 받아볼 수 있다. ;;
DBmate 세팅
dbmate new create_users2_table
위와 같이 이라고 터미널에서 입력하면
migrations
폴더가 자동 생성되면서 users2
라는 테이블이 생성할 수 있는sql
파일이 생성된다.
그리고 IDE나 vim에서 해당 sql 파일에 테이블 생성 규칙을 작성해주면 된다.
DBmate sql 문서 작성
위와 같이 제대로 파일이 생성되면 파일 편집시 이런 양식이 들어가 있음을 볼 수 있다.
-- migrate:up
-- migrate:down
-- migrate:up
=> table 생성시 넣고자 하는 코드
-- migrate:down
=> 보통 테이블 제거시 실행할 명령문
-- migrate:up
create table users (
id integer,
name varchar(255),
email varchar(255) not null
);
-- migrate:down
drop table users2;
위와 같은 형식으로 작성된다.
제대로 했다면, 이게 끝이다.
migration 실행
$dbmate up
문서를 모두 작성 한 후, 터미널에서 명령어를 실행하면
이런 아름답고 꿈에 그리던 메세지를 받아볼 수 있다.
그리고 mySQL 서버로 가서
show tables;
를 입력해보자.
무사히 테이블이 생성되어 있음을 확인할 수 있다.
dbmate down
위 명령어도 실행해보며 DBmate가 어떻게 돌아가는지 알면 좋다.
추가 보완해야 할 사항
위 문서에서는 하나의 테이블을 가지고 예를 들었는데, 명령어는 단순히 dbmate up
이 끝이다.
만약 여러 테이블을 생성한다면??
어떤 테이블을 up
하는 건지 table에 대한 지정이 없다.
즉, 아마도 테이블의 생성 순서에 따라 순차적으로 실행되지 싶은데,
이부분은 mock table을 여러개 만들어 직접 실험을 해봐야겠다.
참고문서