Skip to main content
생성된 Migration 파일을 데이터베이스에 적용하는 방법입니다.

실행 명령어

migrate run

모든 Migration 실행 DB 최신 상태로

migrate status

실행 상태 확인 pending 목록

migrate apply

대상 DB를 골라서 실행

migrate generate

준비된 Migration 파일 생성
sonamu migrate의 서브커맨드는 run, apply, generate, status 네 가지입니다. 롤백은 CLI가 아닌 Sonamu UI에서 수행합니다. 롤백하기 문서를 참고하세요.

기본 실행

모든 Migration 실행

실행 결과:
migrate run은 아직 실행되지 않은 모든 Migration을 순서대로 실행합니다.

실행 상태 확인

출력 예시:

실행 순서

Migration은 파일명의 타임스탬프 순서로 실행됩니다:

대상 DB 지정 실행

migrate apply

migrate run은 현재 NODE_ENV에 해당하는 DB에만 적용합니다(NODE_ENV=test인 경우 testfixture). 대상 DB를 직접 고르려면 migrate apply를 사용합니다.
실행하면 대상 선택 프롬프트가 나타납니다.
NODE_ENVlocal이 아니면 해당 환경과 이름이 같은 커넥션만 허용됩니다. 그 외 대상을 고르면 Migration targets are not allowed in NODE_ENV=... 에러로 차단됩니다.
Migration 하나씩만 골라서 실행하는 명령은 제공되지 않습니다. 실행 단위는 항상 pending 전체입니다.

Batch 시스템

Batch란?

함께 실행된 Migration 그룹입니다:

Batch의 역할

  • 롤백 단위: 같은 batch의 Migration은 함께 롤백됩니다
  • 실행 그룹: migrate run으로 한 번에 실행하면 같은 batch

환경별 실행

개발 환경

스테이징 환경

프로덕션 환경

프로덕션 실행 전 주의사항: 1. 스테이징에서 먼저 테스트 2. 백업 완료 확인 3. 다운타임 계획 4. 롤백 계획 준비

트랜잭션

자동 트랜잭션

각 Migration은 별도 트랜잭션으로 실행됩니다:

트랜잭션 비활성화

일부 DDL 작업은 트랜잭션을 지원하지 않을 수 있습니다.

에러 처리

실행 중 에러

에러 발생:
처리 방법:
  1. Migration 파일 수정
  2. 다시 실행 시도

부분 실패

Migration이 실패하면: - 해당 Migration만 롤백 - 이전 Migration은 유지 - knex_migrations 테이블에 기록 안 됨

실행 로그 확인

실행 결과

migrate run은 대상 커넥션별로 batch 번호와 적용된 파일 목록을 출력합니다. SQL 단위의 상세 로그를 남기는 옵션은 제공되지 않으므로, 실제 실행된 SQL을 확인하려면 아래 knex_migrations 조회나 DB 서버 로그를 사용하세요.

실행 기록 조회

CI/CD 통합

GitHub Actions

Docker

다운타임 최소화

Blue-Green Deployment

호환성 유지

실전 팁

1. 실행 전 확인

2. 백업

3. 모니터링

다음 단계

롤백하기

Sonamu UI에서 되돌리기

전략

안전한 마이그레이션

마이그레이션 생성

Sonamu UI에서 생성

동작 원리

자동 생성 이해하기