Spring Boot 프로젝트 는 Flyway 의 상세 한 튜 토리 얼 을 사용 합 니 다.
개발 자 들 은 합작 할 때 다음 과 같은 장면 을 자주 만난다.
1.개발 자 A 는 자신의 로 컬 데이터 베이스 에서 표 구 조 를 바 꾸 었 고 이 변경 에 따라 DAO 층 의 코드 를 조정 한 다음 에 svn 이나 git 등 버 전 제어 서버 에 코드 를 업로드 했다.이때 개발 자 B 가 A 의 코드 를 변경 하면 프로젝트 를 실행 할 때 오류 가 발생 할 수 있 습 니 다.B 의 로 컬 SQL 데이터 베 이 스 는 수정 되 지 않 았 기 때 문 입 니 다.
2.프로젝트 가 실 행 될 때 서버 에서 끌 어 온 버 전 관리 서버 의 최신 수정 후 SQL 데이터베이스 수정 스 크 립 트 를 동시에 실행 해 야 합 니 다.데이터베이스 스 크 립 트 를 놓 치면 심각 한 문제 가 발생 할 수 있 습 니 다.
전통 적 인 해결 방안 은 고정된 폴 더 에 달 려 야 할 SQL 스 크 립 트 를 넣 는 것 이다.개발 자가 합작 할 때 A 는 데이터 베 이 스 를 수 정 했 고 B 가 문제 가 생 겼 을 때 의사 소통 을 하고 필요 한 스 크 립 트 를 뛰 어야 할 수도 있 습 니 다.프로젝트 가 출시 되 는 과정 에서 운영 자 들 이 정 해진 폴 더 에서 뛰 어야 할 SQL 스 크 립 트 를 찾 았 습 니 다.그것들 을 운행 하 다.
Flyway 등 migration 도 구 는 개발 자 와 운영 자 를 상기 장면 의 번 거 로 운 작업 에서 해방 시 키 는 것 입 니 다.Maven 을 사용 하면 프로젝트 컴 파일(SpringBoot 실행 Application)을 할 때 SQL 데이터 베 이 스 를 변경 하면 자동 으로 데이터 베이스 에 들 어 갑 니 다.시작 에 성공 하면 개발 또는 운영 자 는 SQL 데이터 뱅 크 의 migrate 과정 에 대해 감지 하지 못 합 니 다.프로젝트 는 여전히 평소 대로 운행 할 수 있다.
Technical Background
To read and practice this document, user ought to be able to develop projects via git, SpringBoot and MySQL.
Instructions - Run Demo
1.데모 원본 다운로드:
git clone https://git.oschina.net/dreamingodd/spring-boot-flyway-demo.git
2.Intellij 또는 Eclipse import existing maven procject 를 사용 합 니 다.
3.로 컬 mysql console 에서 실행:
create database flyway_test;
use flyway_test;
4.프로필 을 수정 하고 username 과 password 를 로 컬 MySQL 데이터베이스 로 변경 합 니 다.5.Flyway TestApplication 클래스 를 실행 합 니 다.
6.mysql console 에서 실행
show tables;
다음 결 과 를 볼 수 있 습 니 다:(schema_version 표 는 데이터베이스 버 전 정 보 를 저장 합 니 다.어떤 스 크 립 트 가 실행 되 었 는 지 는 신경 쓰 지 마 세 요)
7.데모 시트 가 자동 으로 생 성 되 었 습 니 다.
What Happened
이상 의 과정 은 어떻게 실현 되 었 습 니까?
Flyway 는 maven 프로젝트 컴 파일(SpringBoot 에서 Application 실행)을 할 때 resources/db/migration 디 렉 터 리 에 있 는 파일 을 자동 으로 검색 합 니 다.
V1 열기demo.sql:
방금 자동 으로 실 행 된 SQL 스 크 립 트 입 니 다.스 크 립 트 를 추가 하면 V2 순서대로 사용XXX.sql,V3__XXX.sql,이런 식 으로 유추 하면 스 크 립 트 에서 정상 적 인 SQL 문 구 를 사용 하면 되 고 학습 부담 이 없습니다.
이렇게 개발 자 협력 및 프로젝트 배 치 를 할 때 Flyway 는 자동화 배 치 를 강화 하고 지속 적 인 배 송 을 실천 하 는 역할 을 했다.
Instruction - Use in Current Project
그렇다면 한동안 개 발 된 프로젝트 에서 플라이 웨 이 를 어떻게 사용 할 것 인가?
1.Maven 설정
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>4.0.3</version>
</dependency>
<plugin>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<version>4.0.3</version>
</plugin>
2.application.properties 설정flyway.baselineOnMigrate=true
응용 프로그램
flyway.baselineOnMigrate: true
3.resources/db/migration 에 V1 추가XXX.sql,mvn copile(응용 프로그램 실행)에서 SQL 스 크 립 트 실행 결 과 를 볼 수 있 습 니 다.(V1 뒤에 밑줄 두 개 주의)
Appendix
1.잘못된 해결 방법:
SQL 스 크 립 트 실행 에 실패 하면 schemaversion 표 에서 최신 데 이 터 를 삭제 합 니 다.
예 를 들 어 제 가 일부러 잘못된 SQL 문 구 를 V2 까지 썼 습 니 다.demo 2.sql,mvn copile 실행(응용 프로그램 실행).
최신 항목 을 볼 수 있 는 success 는 false 입 니 다.
부분 이 성공 하면 수 동 rollback 을 사용 하여 SQL 스 크 립 트 를 수정 한 후 다시 mvn copile(응용 프로그램 실행)을 실행 해 야 합 니 다.
2.더 많은 정 보 는 홈 페이지 를 방문 하 세 요https://flywaydb.org/
Spring Boot 프로젝트 의 Flyway 사용 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 Spring Boot 의 Flyway 사용 에 관 한 내용 은 이전 글 을 검색 하거나 아래 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.