반응형
Flyway 란?
Welcome to Flyway, database migrations made easy.
Flyway는 오픈 소스 데이터베이스 마이그레이션 도구입니다. - flywaydb.org-
플라이웨이는 디비 마이그레이션 도구로써 데이터베이스 형상관리를 위해서 사용합니다.
형상관리란 소프트웨어의 변경사항을 체계적으로 추적하고 통제하는 것으로, 형상 관리는 일반적인 단순 버전 관리 기반의 소프트웨어 운용을 좀 더 포괄적인 학술 분야의 형태로 넓히는 근간을 이야기합니다.
자세한 내용은 우아콘 flyway 를 참고하시면 좋을거 같습니다.
Flyway_schema_history
flyway_schema_history는 flyway사용할때 생기는 테이블 입니다.
flyway를 사용하면 sql 파일을 돌면서 실행하게 되고 flyway_schema_history 테이블에 관리를 위하여 flyway가 insert해줍니다.
flyway_schema_history 에는 다음과 같은 중요한 컬럼이 있습니다.
version: 말 그대로 버전을 의미합니다.
script : 어떤 스크립트를 돌렸는지 스크립트 파일명을 알 수 있습니다.
checksum: 스크립트 파일내용의 해시값으로 파일내용이 변경되면 에러를 일으킬수 있습니다.
Flyway 에러났을때?
다음과 같은 작업시에 에러가 날 수 있습니다.
- 다른 개발자와 ddl 작업을 하다가 같은 버전(ex V100_~.sql)의 sql파일을 올릴때
- sql파일을 수정했을때(기본적으로 flyway를 사용하면 sql파일을 수정하지 않는게 원칙입니다.)
설정에 따라서는 checksum이 어떤게 변경되었는지도 로그로 나오게 됩니다.
에러처리 하는 방법 2가지
- flyway.migrate() 하기전에 flyway.repair(); 를 사용하여 checksum을 재설정하게 됩니다.
@Bean
public Flyway flywayBean() {
Flyway flyway = Flyway.configure().baselineOnMigrate(true).load();
flyway.repair();
flyway.migrate();
return flyway;
}
- flyway_schema_history checksum update 문을 이용하여 checksum을 수정합니다.
update flyway_schema_history set checksum = '-1051671522'
where version = 7;
참고
반응형
'프로그래밍 > Java & Spring' 카테고리의 다른 글
CompletableFuture와 daemon Thread (0) | 2022.09.02 |
---|---|
Java Spring OOM 분석 및 해결 후기 (0) | 2022.08.18 |
configuration test 대체하기 (0) | 2022.05.07 |
스프링 이벤트 프로그래밍 적용하기 (0) | 2022.05.07 |
@SpringBootTest @Transactional rollback (0) | 2022.03.13 |
댓글