Java使用flyway實現(xiàn)腳本自動化的方法詳解
如何使用
使用Flyway,僅需將編寫的好SQL語句寫成sql腳本文件,根據(jù)版本規(guī)定填寫正確的文件名,存放到指定的目錄底下,在項目進行啟動時即可自動掃描指定目錄底下的腳本,根據(jù)數(shù)據(jù)庫Flyway配置表進行對比,將未執(zhí)行的腳本按順序自動執(zhí)行。
Flyway腳本遷移文件命名需要遵循以下規(guī)則:

如上圖,文件命名規(guī)范主要分為以下幾個部分:
- 前綴:
V表示版本化遷移,U表示撤銷遷移,R表示可重復遷移。 - 下劃線:在版本號中下劃線會被
.替換。 - 分隔符:兩個下劃線,用來分隔版本號與文件描述詞
- 描述:腳本文件內容的簡短描述,執(zhí)行后內容中的下劃線則會被替換為空格。
文件名版本號與文件描述內容以兩個下劃線分隔開,命名示例:
- V1_20231026154401__create_student_table.sql
- V1_20231026162233__insert_student_data.sql
通常情況下我們都是直接以V前綴進行命名,在需要進行回退操作時,直接在腳本中寫好回退的腳本即可。
更多內容可以參考官方文檔說明:https://documentation.red-gate.com/fd/migrations-184127470.html#versioned-migrations
案例分析
首先需要引入flyway依賴包:
<dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> <version>6.4.1</version> </dependency>
在application.yml文件中添加flyway相關配置信息,開啟flyway腳本遷移功能:
spring:
flyway:
# flyway 開啟/關閉
enabled: true
# 當遷移時發(fā)現(xiàn)目標schema非空,而且?guī)в袥]有元數(shù)據(jù)的表時,是否自動執(zhí)行基準遷移,默認false.
baseline-on-migrate: true
# 是否允許無序的遷移,默認false.
out-of-order: true
# 遷移時是否校驗,默認為true
validate-on-migrate: false
# 遷移腳本的位置,默認db/migration.
locations: classpath:db
# flyway 基線版本號
baseline-version: 0
# flyway 執(zhí)行記錄表
table: demo_flyway_schema_history
在上面的配置中也描述了每個屬性參數(shù)的作用,上面的腳本位置配置的是locations: classpath:db,在這里我們就可以將需要進行遷移執(zhí)行的腳本文件,按上面的命名規(guī)范配置好之后存放到此目錄下:

確認好文件存放位置無誤之后,我們就可以直接啟動服務:

如圖服務啟動成功后,我們就可以看到相關flyway執(zhí)行的日志信息,如果是首次使用flyway遷移腳本的話,那么就會自動幫我們創(chuàng)建一個flyway執(zhí)行記錄表,表結構如下:


- installed_rank:主鍵
- version:版本號
- description:文件描述
- type:腳本類型
- script:完整文件名
- checksum:flyway通過特定的算法根據(jù)文件內容計算出來的一個整數(shù),可以簡單理解為文件內容的標識符,如果我們在配置中開啟校驗時(
validate-on-migrate=true),如果我們文件內容有修改將計算出新的checksum與執(zhí)行過的的checksum不一致時即會報mismatch的錯誤,以此來告知開發(fā)者腳本有變動。 - installed_by:執(zhí)行腳本的數(shù)據(jù)庫用戶
- execution_time:執(zhí)行時間
- success:執(zhí)行結果,0:失敗,1:成功
總結
有了這么一個腳本遷移的工具,對于開發(fā)人員也好,對運維人員也罷,都能夠減輕雙方的負擔,并且減少在部署時手動去執(zhí)行腳本出錯的風險,好的工具一直在為我們節(jié)約更多的時間,用上之后真的停不下來。
以上就是Java使用flyway實現(xiàn)腳本自動化的方法詳解的詳細內容,更多關于Java flyway實現(xiàn)腳本自動化的資料請關注腳本之家其它相關文章!
相關文章
Java對數(shù)組實現(xiàn)選擇排序算法的實例詳解
這篇文章主要介紹了Java對數(shù)組實現(xiàn)選擇排序算法的實例,選擇排序的比較次數(shù)為 O(N^2)而交換數(shù)為O(N),需要的朋友可以參考下2016-04-04
SpringBoot中統(tǒng)一同步與異步執(zhí)行模型的示例詳解
這篇文章主要為大家詳細介紹了SpringBoot中如何統(tǒng)一同步與異步執(zhí)行模型,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2025-12-12
JAVA | Guava EventBus 使用 發(fā)布/訂閱模式的步驟
這篇文章主要介紹了JAVA | Guava EventBus 使用 發(fā)布/訂閱模式的步驟,幫助大家更好的理解和學習使用Guava EventBus,感興趣的朋友可以了解下2021-03-03
IDEA創(chuàng)建SpringBoot的maven項目的方法步驟
這篇文章主要介紹了IDEA創(chuàng)建SpringBoot的maven項目的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04
關于Tomcat出現(xiàn)The origin server did not find a current represent
這篇文章主要介紹了關于Tomcat出現(xiàn)The origin server did not find a current representation for the target resourc...的問題,感興趣的小伙伴們可以參考一下2020-08-08
java圖形化界面實現(xiàn)簡單混合運算計算器的示例代碼
這篇文章主要介紹了java圖形化界面實現(xiàn)簡單混合運算計算器的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-11-11

