개요
go언어의 데이터베이스(DB) migration 툴로 sql-migrate를 사용하여 개발함에 있어 명령어와 동작사양 등을 간단하게 적음.
목록
특징
- CLI툴
- SQLite, PostgresSQL, MySQL, Oracle 등의 다양한 데이터베이스 지원
- 스키마 작성, 변경, 롤백 기능
- 소스코드에서 실행 제어
인스톨
go get -v github.com/rubenv/sql-migrate/…
설정파일
디폴트는 dbconfig.yml
이라는 파일을 참조함.
yml내의 env키에는 development, production 등 환경마다 설정을 정의할 수 있음.
migration의 실행을 관리하는 테이블명은 gorp_migrations
임.
dir은 작성된 migration파일의 저장 장소.
옵션으로 이름 등 수정 가능
명령어
sql-migrate --help
- help 보기
sql-migrate new [name]
- [current time]-[name].sql 이름으로 빈 마이그레이션 템플릿 파일이 생성됨
sql-migrate up
- 마이그레이션 실행
sql-migrate up -dryrun
- 마이그레이션을 dryrun으로 실행. 실행 예정의 sql을 출력함.
sql-migrate down
- 마이그레이션 롤백
sql-migrate status
- 마이그레이션 실행 상태 확인
마이그레이션 실행 관리 테이블
마이그레이션 첫 실행 시 gorp_migrations
라는 이름의 테이블이 자동으로 생성된다.
이 테이블에는 실행한 마이그레이션 파일명을 등록하여 실행 여부를 관리하고 있다.
마이그레이션 파일 삭제 혹은 파일명 수정 시
마이그래이션 파일 즉 SQL 파일의 삭제나 파일명 수정 시에는 gorp_migrations
테이블에서 해당 파일명의 레코드를 삭제할 필요가 있다.
그렇지 않고 삭제나 파일명을 수정하면 파일을 찾을 수 없어서 마이그레이션 실행 시 에러가 날 수 있다. (sql-migrate up
혹은 sql-mirgate down
등 실행 시 에러가 날 수 있음)