사용자 도구

사이트 도구


java:database:migration:flyway

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
마지막 판 양쪽 다음 판
java:database:migration:flyway [2023/06/08 09:29]
kwon37xi [skipExecutingMigrations]
java:database:migration:flyway [2023/06/08 10:11]
kwon37xi [migration history 자체가 생성이 안 됨]
줄 110: 줄 110:
   * 따라서 SpringBoot application에서는 아예 flyway 에 대한 의존성을 걸지 않는 것을 추천한다.   * 따라서 SpringBoot application에서는 아예 flyway 에 대한 의존성을 걸지 않는 것을 추천한다.
  
-===== skipExecutingMigrations =====+===== 특정 migration 실패 대응 ===== 
 +migration 을 실행했으나, 이미 누군가가 수동으로 마이그레이션을 진행한 상황이라서 migration history 가 실패했거나 존재하지않는 상황일 때 대응하는 방법 
 + 
 +==== migration history는 생성됐으나 success = 0 ==== 
 +<code sql> 
 +select * from flyway_schema_history WHERE version = <실패한MIGRATION버전>; 
 +update flyway_schema_history SET success = 1 WHERE version = <실패한MIGRATION버전>; 
 +</code> 
 + 
 +==== 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);\n', 
 +    'INSERT INTO flyway_schema_history ', 
 +    'SET', 
 +    ' installed_rank = @max_rank + 1', 
 +    ', version = ', fsh.version, 
 +    ', description = ''', fsh.description, '''', 
 +    ', type = ''', fsh.type, '''', 
 +    ', script = ''', fsh.script, '''', 
 +    ', checksum = ''', fsh.checksum, '''', 
 +    ', installed_by = CURRENT_USER()', 
 +    ', installed_on = now()', 
 +    ', execution_time = ', fsh.execution_time, 
 +    ', success = ', fsh.success, 
 +    ';'
 +from flyway_schema_history fsh where version = <실패한MIGRATION버전>; 
 +  
 +-- 실제 flyway를 적용할 DB에서 위 쿼리를 실행해서 나온 SQL 문을 실행해주면 된다. 
 +</code> 
 + 
 +==== migration history 자체가 생성이 안 됨 - skipExecutingMigrations ====
   * [[https://flywaydb.org/documentation/configuration/parameters/skipExecutingMigrations#configuration-file|flyway.skipExecutingMigrations - Skip Executing Migrations - Flyway by Redgate • Database Migrations Made Easy.]]   * [[https://flywaydb.org/documentation/configuration/parameters/skipExecutingMigrations#configuration-file|flyway.skipExecutingMigrations - Skip Executing Migrations - Flyway by Redgate • Database Migrations Made Easy.]]
   * [[https://flywaydb.org/blog/skipexecutingmigrations|Skip Executing Migrations Examples - Flyway]]   * [[https://flywaydb.org/blog/skipexecutingmigrations|Skip Executing Migrations Examples - Flyway]]
줄 122: 줄 157:
 </code> </code>
   * 이 기능을 사용할 수 없으면, local 에서 실행한 history 를 그대로 복사해서 넣거나 해야한다.   * 이 기능을 사용할 수 없으면, local 에서 실행한 history 를 그대로 복사해서 넣거나 해야한다.
 +
 +
java/database/migration/flyway.txt · 마지막으로 수정됨: 2023/06/08 10:20 저자 kwon37xi