Go 언어 데이터베이스 마이그레이션 – sql-migrate 사용법

개요

go언어의 데이터베이스(DB) migration 툴로 sql-migrate를 사용하여 개발함에 있어 명령어와 동작사양 등을 간단하게 적음.

목록

공식 리포지토리

https://github.com/rubenv/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 등 실행 시 에러가 날 수 있음)

 

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Scroll to Top