문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
java:database:migration:flyway [2023/06/08 09:28] kwon37xi [SpringBoot & Flyway] |
java:database:migration:flyway [2023/06/08 10:20] (현재) kwon37xi [migration history는 생성됐으나 success = 0] |
||
---|---|---|---|
줄 110: | 줄 110: | ||
* 따라서 SpringBoot application에서는 아예 flyway 에 대한 의존성을 걸지 않는 것을 추천한다. | * 따라서 SpringBoot application에서는 아예 flyway 에 대한 의존성을 걸지 않는 것을 추천한다. | ||
- | ===== skipExecutingMigrations | + | ===== 특정 migration 실패 대응 |
+ | migration 을 실행했으나, | ||
+ | |||
+ | ==== migration history는 생성됐으나 success = 0 ==== | ||
+ | <code sql> | ||
+ | -- 먼저 데이터 확인 | ||
+ | select * from flyway_schema_history WHERE version = < | ||
+ | |||
+ | -- 성공으로 강제 update | ||
+ | update flyway_schema_history SET success = 1 WHERE version = < | ||
+ | </ | ||
+ | |||
+ | ==== migration history 자체가 생성이 안 됨 ==== | ||
+ | * migration history 가 생성이 안 됐다면, local DB 등에서 migration 을 전체 실행하고 실패한 version 관련 정보를 강제로 넣어준다. | ||
+ | |||
+ | <code sql> | ||
+ | -- MySQL 기준임. | ||
+ | -- local db 에서 | ||
+ | select concat( | ||
+ | 'SET @max_rank = (select MAX(installed_rank) from flyway_schema_history); | ||
+ | ' | ||
+ | ' | ||
+ | ' installed_rank = @max_rank + 1', | ||
+ | ', version = ', fsh.version, | ||
+ | ', description = ''', | ||
+ | ', type = ''', | ||
+ | ', script = ''', | ||
+ | ', checksum = ''', | ||
+ | ', installed_by = CURRENT_USER()', | ||
+ | ', installed_on = now()', | ||
+ | ', execution_time = ', fsh.execution_time, | ||
+ | ', success = ', fsh.success, | ||
+ | ';' | ||
+ | from flyway_schema_history fsh where version = < | ||
+ | |||
+ | -- 실제 flyway를 적용할 DB에서 위 쿼리를 실행해서 나온 SQL 문을 실행해주면 된다. | ||
+ | </ | ||
+ | |||
+ | ==== migration history 자체가 생성이 안 됨 - skipExecutingMigrations | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
* 마이그레이션을 누군가 수동으로 진행했을 때 마이그레이션을 실행하지 않고, 빠져있는 migration history 만 채워넣는다. | * 마이그레이션을 누군가 수동으로 진행했을 때 마이그레이션을 실행하지 않고, 빠져있는 migration history 만 채워넣는다. | ||
* 유료버전 기능. | * 유료버전 기능. | ||
+ | |||
+ | <code gradle> | ||
+ | flyway { | ||
+ | skipExecutingMigrations = true | ||
+ | } | ||
+ | </ | ||
+ | * 이 기능을 사용할 수 없으면, local 에서 실행한 history 를 그대로 복사해서 넣거나 해야한다. | ||
+ | |||