2012-07-24 4 views
8

우리의 시스템플라이 웨이에서 마이그레이션을 다시 실행하는 방법은 무엇입니까?

우리는 버전 제어에서 .SQL 파일로 마이그레이션을 넣어 위해 노력하고 있습니다. 개발자는 VN __ *. sql 파일을 작성하고 버전 제어에 커밋하며 5 분마다 실행되는 작업이 자동으로 Dev 및 Test 데이터베이스로 마이그레이션됩니다. 변경으로 인해 문제가 발생하지 않으면 다른 사람이 수동 작업을 실행하여 Production에서 마이그레이션을 실행합니다.

내 문제 :

나는 몇 테이블을 만든 데모 마이그레이션을했다. 내 PC에서 V4__DemoTables.sql 버전을 확인했습니다.

리눅스 박스에서는 5 분마다 실행되는 작업이 버전 관리에서 새 파일을 추출한 다음 flyway.sh 파일을 실행했습니다. 파일을 감지하여 실행했습니다.

그러나 .sql 파일에는 오타가 있습니다. 그리고 우리는 이동 경로를 자동으로 BEGIN TRAN ... END TRAN에 포장하는 데 문제가있는 Neteeza를 사용하고 있습니다. 따라서 이주는 2 개의 테이블을 생성 한 다음 세 번째 테이블보다 먼저 중단되었습니다.

아무 문제 없습니다. .sql 파일이 작성한 2 개의 테이블을 삭제했습니다. 버전 관리에서 V4__를 확인하고 오타를 수정 한 다음 다시 제출했습니다.

5 분 후에 업데이트가 추출되었지만 플라이 웨이가 체크섬이 맞지 않는다고 불평합니다. 따라서 업데이트 된 V4__DemoTables.sql 파일은 실행되지 않습니다.

flyway에서 오타가 발생한 경우 업데이트 된 파일을 받아들이고 SCHEMA_VERSION 파일의 체크섬을 업데이트하려면 어떻게합니까?

개발자가 수정 사항이 포함 된 새로운 V4_1_DemoTables.sql 파일을 만들어야한다고 제안한 것처럼 보입니다. 하지만 이것은 V4__ 파일의 명령과 충돌했을 것입니다.

  • 휴가 V4__을에 '성공'마이그레이션으로 SCHEMA_VERSION 테이블에 따라 :

    그래서 여기에 문서 내가 할 필요가 의미하는 것입니다.

    V4_1에 입력 된 줄 앞에 작성된 표를 삭제하려면 V4_1_을 작성하십시오.

    원본 파일과 오타가있는 V4_2_를 만들어 모두 실제 작업을 수행하십시오.

이 내용이 정확합니까?

답변

11

마이그레이션 이 성공적으로 완료되지만 DB 객체의 일부는 꽤 괜찮 아직하지 않은 경우, 당신이 말한대로 수행하고 고정하는 후속 스크립트를 밀어 (열 이름, ...에 오타) (열 이름 바꾸기 ...). 마이그레이션 을 실패하고 DDL 거래와 DB에서 실행되지 않은 경우

의 DB는 수동 청소해야합니다.이는 :

  • 가 SCHEMA_VERSION 테이블에서 버전을 제거 DB
  • 에 대한 마이그레이션의 영향을 되돌리기 및이 두 번째 단계는 미래에 자동화됩니다 현재

로 이전 마킹 introduction of the flyway.repair() command.

+0

빠른 응답을 보내 주셔서 감사합니다. 이전 행을 현재로 표시하는 것에 대해서는 몰랐습니다. –

관련 문제