문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
|
java:database:migration:flyway [2018/07/31 14:14] kwon37xi [config 파일 이용] |
java:database:migration:flyway [2023/06/08 10:20] (현재) kwon37xi [migration history는 생성됐으나 success = 0] |
||
|---|---|---|---|
| 줄 19: | 줄 19: | ||
| configFiles = ['/ | configFiles = ['/ | ||
| } | } | ||
| - | // 이 얘기는 공통 설정 | + | // 이 얘기는 공통 설정 |
| flyway { | flyway { | ||
| - | configFiles = ['/ | + | |
| + | locations = [" | ||
| + | encoding = ' | ||
| + | // .... | ||
| + | | ||
| + | } | ||
| + | |||
| + | // 혹은 -Pprofile=local 형태로 프로필을 지정하고 | ||
| + | flyway { | ||
| + | driver = ' | ||
| + | | ||
| + | configFiles = [" | ||
| } | } | ||
| </ | </ | ||
| 줄 87: | 줄 98: | ||
| enabled: false | enabled: false | ||
| </ | </ | ||
| + | * 가급적 **'' | ||
| ===== Version Number ===== | ===== Version Number ===== | ||
| 줄 93: | 줄 105: | ||
| * '' | * '' | ||
| * [[https:// | * [[https:// | ||
| + | |||
| + | ===== SpringBoot & Flyway ===== | ||
| + | * [[springframework: | ||
| + | * 따라서 SpringBoot application에서는 아예 flyway 에 대한 의존성을 걸지 않는 것을 추천한다. | ||
| + | |||
| + | ===== 특정 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:// | ||
| + | * 마이그레이션을 누군가 수동으로 진행했을 때 마이그레이션을 실행하지 않고, 빠져있는 migration history 만 채워넣는다. | ||
| + | * 유료버전 기능. | ||
| + | |||
| + | <code gradle> | ||
| + | flyway { | ||
| + | skipExecutingMigrations = true | ||
| + | } | ||
| + | </ | ||
| + | * 이 기능을 사용할 수 없으면, local 에서 실행한 history 를 그대로 복사해서 넣거나 해야한다. | ||
| + | |||
| + | |||