2013-07-16 2 views
1

이동 경로가 JdbcMigration 인터페이스를 구현하는 클래스에서 발생한 예외를 처리하는 방법을 궁금 해서요.자바 마이 그 레이션 마이 그 레이션이 예외를 throw하면 어떻게됩니까?

플라이 웨이가 트랜잭션을 롤백합니까? 더 이상 마이그레이션을하지 않습니까?

+2

예, 잘 실행 된 최신 스크립트 또는 최신 커밋이 완료 될 때까지 트랜잭션을 롤백합니다. 그런 다음 예외를 기록하고 사용자에게 알립니다 (구성 방법에 따라 다름). –

+0

도움이 될 수 있습니다 : http : //stackoverflow.com/questions/4959299/how-to-roll-back-migrations-using-flyway/4959332#4959332 –

+0

@LuiggiMendoza 의견이 맞습니다. 대답으로 바꾸십시오. –

답변

4

Flyway는 트랜잭션을 롤백합니까?

예, 올바르게 실행 된 최신 스크립트 또는 최신 커밋이 완료 될 때까지 트랜잭션을 롤백합니다. 그런 다음 예외를 기록하고 사용자에게 알립니다 (구성 방법에 따라 다름).

는 더 마이그레이션을 그만합니까?

AFAIK는 일반적인 동작으로 오류가 발생하면 중지됩니다.

+1

대부분의 DB를 하나 이상의 DDL 문에 롤백을 할 수없는 아닌가요? Flyway는 성명서의 절반 만 실행 한 스크립트를 어떻게 처리합니까? –

+0

@AleksandrDubinsky 당신이 그 설정을 수정하지 않는다면 그것은 스크립트와 상관없이 모두 원자 조작과 같습니다. –

+1

MySQL docs : "일부 명령문은 롤백 할 수 없습니다. 일반적으로 데이터베이스 작성 또는 삭제, 테이블 또는 저장 루틴을 작성, 삭제 또는 변경하는 데이터 정의 언어 (DDL) 문이 포함됩니다. 즉, 그러한 진술을 가진 트랜잭션은 롤백 될 수 없습니다. 일부 DB는 DDL 트랜잭션 (예 : PostgreSQL)을 지원합니다. 다른 것들은 트랜잭션 당 하나의 DDL 문을 지원합니다. Liquibase는 명령문 당 트랜잭션을 열고이를 메타 데이터에 기록하므로 도움이 될 수 있습니다 (중단 된 부분을 알고 있음). 이동 경로의 경우 스냅 샷에서 DB를 더 잘 복구하는 것처럼 들립니다. –

관련 문제