Flyway용 이행 SQL 자동 생성
Java 코드를 통해 새로운 모델/필드 등을 추가할 때 JPA/Hibernate의 자동 스키마 생성으로 새로운 Flyway Migration을 생성할 수 있습니까?
자동 생성된 SQL을 캡처하여 새로운 Flyway 마이그레이션에 직접 저장하여 프로젝트 저장소에 검토/편집/커밋하는 것이 유용합니다.
도움을 주시거나 계몽해 주셔서 감사합니다.
IDE가 IntelliJ IDEA라면 JPA Buddy 플러그인을 사용하는 것이 좋습니다.Java 모델을 대상 DB와 비교하여 Flyway 마이그레이션을 생성할 수 있습니다.
이를 사용하여 진화하는 모델과 SQL 스크립트를 동기화할 수 있습니다.또한 DB가 비어 있는 경우 init 스크립트를 생성할 수 있습니다.
Flyway를 설치하고 Maven/Gradle 종속성으로 설정하면 다음과 같은 마이그레이션을 생성할 수 있습니다.
Flyway는 diff에 대한 기본 지원은 없습니다. 저는 maven spring boot project 내에서 liquid base를 사용합니다. changelogs는 다음을 사용하여 JPA/hibernate 변경에서 생성할 수 있습니다.
mvn liquibase:diff
리퀴베이스 diff의 모든 옵션은 http://www.liquibase.org/documentation/maven/maven_diff.html에 있습니다.
업데이트 SQL을 자동으로 생성하려면 휴지 상태를 요청하십시오. Spring Boot 구성에 다음 행을 추가하십시오.
spring.jpa.properties.javax.persistence.schema-generation.create-source=metadata
spring.jpa.properties.javax.persistence.schema-generation.scripts.action=update
spring.jpa.properties.javax.persistence.schema-generation.scripts.create-target=update.sql
응용 프로그램을 실행하면 다음과 같은 이름의 파일이 생성됩니다.update.sql
당신의 프로젝트의 뿌리로요.이제 Flyway 마이그레이션에 복사하여 붙여넣기만 하면 됩니다.
이것은 다른 답변인 https://stackoverflow.com/a/36966419/679240에서 수정한 것입니다.단, 데이터베이스 작성 스크립트를 생성하려고 하는데 업데이트스크립트가 필요했다는 점만 빼면 기본적으로 같은 논리입니다.
참고로 스크립트의 외부 키 이름을 읽기 쉬운 이름으로 바꾸려면 다음 regex를 사용할 수 있습니다.^(alter table .*?)(\w+)(\s+add constraint )\w+( foreign key \()(.*?)(\).*)
이 대체품:$1$2$3fk_$2__$5$4$5$6
; 스크립트의 FK 이름이 변경됩니다.fk_name_of_the_table__name_of_the_field
.
언급URL : https://stackoverflow.com/questions/35984401/automatic-generation-of-migration-sql-for-flyway
'programing' 카테고리의 다른 글
Jest는 테스트를 찾지만 커버리지를 수집하지 않습니다. (0) | 2023.03.04 |
---|---|
반응 후크 사용효과 종속성 배열 (0) | 2023.03.04 |
Panda Dataframe을 중첩된 JSON으로 변환 (0) | 2023.03.04 |
"rel=nofollow noopener" - 동시에 둘 다 가질 수 있나요? (0) | 2023.03.04 |
스트라이프: 계획 없이 반복 지불을 설정하는 방법 (0) | 2023.03.04 |