위의 내용을 읽지 않은 경우 관심이 있으시면 읽을 수 있습니다. JDBCTemplate을 사용하는 위의 기사에서, 사용자 테이블은 주로 추가, 삭제, 수정 및 Spring에서 제공하는 JDBCTemplate을 통해 확인됩니다. 이 예제를 구현할 때 MySQL에서 사용자 테이블을 미리 만들었습니다. 우리는 종종 시스템을 실제로 개발할 때 테이블을 만드는 과정을 사용하지만 항상 문제가있었습니다. 시스템의 프로그램 버전은 GIT를 통해 잘 제어되며 데이터베이스 구조는 그렇지 않기 때문입니다. GIT를 통한 버전의 명령문이더라도 각 환경의 데이터베이스에서 버전을 관리하는 방법은 무엇입니까? 다음으로 Flyway를 사용 하여이 기사를 통해 Spring Boot에서 데이터베이스 버전을 관리하는 방법을 배웁니다.
Flyway 소개
Flyway는 간단한 오픈 소스 데이터베이스 버전 컨트롤러 (컨벤션은 구성보다 큽니다)로, 주로 마이그레이션, 청정, 정보, 검증, 기준선, 수리 및 기타 명령을 제공합니다. SQL (PL/SQL, T-SQL) 및 Java 메소드를 지원하고 명령 줄 클라이언트 등을 지원하며 일련의 플러그인 지원 (Maven, Gradle, SBT, Ant 등)도 제공합니다.
공식 웹 사이트 : https://flywaydb.org/
이 기사는 Flyway의 자체 기능을 너무 많이 소개하지 않습니다. 독자는 공식 문서를 읽거나 검색 엔진을 사용하여 더 많은 정보를 얻을 수 있습니다. 아래에서는 Spring Boot 응용 프로그램의 응용 프로그램에 대해 자세히 설명합니다. Flyway를 사용하여 데이터베이스를 만들고 구조를 일관되지 않게 확인하는 방법에 대해 이야기합니다.
시도해보십시오
아래에서 JDBCTemplate을 사용하여 기사의 예제를 사용하여 처리를 완료 할 수 있습니다. 독자는 데이터 액세스와 관련된 모든 프로젝트를 사용하여 다음 컨텐츠를 실험 할 수 있습니다.
첫 번째 단계는 pom.xml에서 Flyway의 종속성을 추가하는 것입니다.
<pectionency> <groupid> org.flywaydb </groupid> <artifactid> flyway-core </artifactid> <버전> 5.0.3 </version> </fectionency>
두 번째 단계는 Flyway의 사양에 따라 버전이 달린 SQL 스크립트를 만드는 것입니다.
프로젝트의 SRC/Main/Resources 디렉토리에서 DB 디렉토리 생성
DB 디렉토리에서 버전이있는 SQL 스크립트 생성 v1__base_version.sql
드롭 테이블 사용자; 사용자;``사용자 '('id` bigint (20) not null auto_increment comment '기본 키',`name` varchar (20) 널 댓글이 아닌 'int'이름 ',`age'int (5) 기본 널 댓글 'Age', 기본 키 = innodb 기본적 charset = utf8mb4; 세 번째 단계는 Application.Properties 파일에로드 할 SQL 스크립트의 위치를 구성하는 것입니다. 두 번째 단계에서 생성 된 결과는 다음과 같습니다.
flyway.locations = classpath :/db
네 번째 단계는 단위 테스트 응용 프로그램 테스트를 실행하는 것입니다. 현재 로그에서 다음 정보를 볼 수 있습니다.
Info 82441 --- [Main] Ofcore.internal.util.versionPrinter : Plyway Community Edition 5.0.3 By BoxfuseInfo 82441 --- [Main] Ofcinternal.database.databasefactory : 데이터베이스 : JDBC : MySQL : // localhost : 3306/test (mysql 5.7)-[Mysql 5.7). Ofcore.internal.command.dbvalidate : 성공적으로 검증 된 1 마이그레이션 (실행 시간 00 : 00.022S) 정보 82441 --- [Main] Ofcore.internal.command.dbvalidate : 성공적으로 검증 된 1 마이그레이션 (실행 시간 00 : 00.022S) 정보 82441------- ofcisjdbctableschemahistory : 스키마 기록 테이블 작성 :`test`.``flyway_schema_history`info 82441 --- [main] ofcore.internal.command.dbmigrate : 현재 버전의 스키마`test ': <<< empty schema >> info 82441-- [main] ofcore.internal.corcore. 마이그레이션 스키마 '테스트'버전 1- 기본 버전원 82441 --- [main] ofcore.internal.sqlscript.sqlscript : db : Unknown Table 'test.user'(SQL 상태 : 42S02- 오류 코드 : 1051) 정보 82441 ----- `테스트 '(실행 시간 00 : 00.128S)
Flyway는 데이터베이스를 초기화하기 위해 버전 스크립트를 실행해야한다는 것을 모니터링하여 V1__Base_Version.sql 스크립트를 실행하여 사용자 테이블을 작성하므로 일련의 단위 테스트 (사용자 테이블에서 CRUD 작업)가 통과 할 수 있습니다.
다섯 번째 단계에서는 단위 테스트를 계속 실행할 수 있으며 현재 로그 출력이 이전과 다르다는 것을 알 수 있습니다.
정보 83150 --- [Main] Ofcore.internal.util.versionPrinter : BoxfuseInfo 83150의 Flyway Community Edition 5.0.3 --- [Main] Ofcinternal.database.databasefactory : 데이터베이스 : JDBC : MySQL : // localHost : 3306/test (MySQL 5.7) Info 83150--- Ofcore.internal.command.dbvalidate : 성공적으로 검증 된 1 마이그레이션 (실행 시간 00 : 00.031S) 정보 83150 --- [main] ofcore.internal.command.dbvalidate : 1 마이그레이션 (실행 시간 00 : 00.031S) 정보 83150-- [메인] ofcore.internal.command.dbmigrate : 현재 스키마의 현재 버전 'test': 1info 83150 --- [main] ofcore.internal.command.dbmigrate : 스키마 'test`는 최신입니다. 마이그레이션이 필요하지 않습니다.
초기화 스크립트가 네 번째 단계에서 실행되기 때문에 이번에는 실행이 v1__base_version.sql 스크립트를 실행하여 사용자 테이블을 재구성하지 못했습니다.
여섯 번째 단계에서는 v1__base_version.sql 스크립트에서 이름 필드의 길이를 수정 한 다음 단위 테스트를 실행하려고 시도 할 수 있습니다. 다음 오류가 발생할 수 있습니다.
오류 83791 --- [main] osboot.springApplication : 응용 프로그램 시작 실패 .springframework.beans.factory.beancreationException : 클래스 경로 리소스에서 정의 된 'flywayinitializer'라는 이름으로 Bean을 생성하는 오류 [org/spramframewor/boot/autoconfigure/flyway/flyautoconfiguration. 중첩 예외는 org.flywaydb.core.api.flywayexception입니다 : 유효성 검사 실패 : 마이그레이션 버전 1-> 데이터베이스에 적용되는 마이그레이션 체크섬 불일치 : 466264992-> 로컬로 해결되었습니다 : -270269434
초기화 스크립트의 변경으로 인해 Flyway Verification이 실패했습니다. 현재 v1__base_version.sql 스크립트는 마지막으로 실행 된 컨텐츠와 다르기 때문에 오류를 유발하고보다 심각한 데이터 구조 손상을 유발하지 않도록 프로그램을 종료하는 것으로 여겨집니다.
요약
지금 까지이 기사의 내용은 끝났습니다. 블로그 게시물의 길이로 인해 플라이 웨이 사용에 대해 더 자세히 말하지 않았습니다. 이 기사는 주로 Spring Boot를 사용하여 데이터베이스 버전 제어에서 더 나은 작업을 수행하는 개인 또는 팀을 돕고 안내하는 디딤돌로 사용됩니다. 보다 심층적 인 신청서는 공식 문서를 참조 및 연구를 위해 읽으십시오.
이 기사의 코드 : github : https://github.com/dyc87112/springboot-learning/
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.