문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
|
java:database:migration:flyway [2023/06/08 09:29] kwon37xi [skipExecutingMigrations] |
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:// | ||
| 줄 122: | 줄 160: | ||
| </ | </ | ||
| * 이 기능을 사용할 수 없으면, local 에서 실행한 history 를 그대로 복사해서 넣거나 해야한다. | * 이 기능을 사용할 수 없으면, local 에서 실행한 history 를 그대로 복사해서 넣거나 해야한다. | ||
| + | |||
| + | |||