小編這次要給大家分享的是SpringBoot如何整合Flyway,文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。
博興ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
Flyway是什么
Flyway是一款開源的數(shù)據(jù)庫版本管理工具,F(xiàn)lyway可以獨立于應(yīng)用實現(xiàn)管理并跟蹤數(shù)據(jù)庫的變更,F(xiàn)lyway根據(jù)自己的約定,不需要復(fù)雜的配置就可以實現(xiàn)數(shù)據(jù)的Migrate。Migrations可以寫成SQL腳本,也可以寫在Java代碼中,F(xiàn)lyway還支持Spring Boot。
簡介
在團(tuán)隊開發(fā)當(dāng)中,有可能每個人都是使用自己本地的數(shù)據(jù)庫。當(dāng)數(shù)據(jù)庫的表或者字段更新時,往往需要告知團(tuán)隊的其他同事進(jìn)行更新。
Flyway數(shù)據(jù)庫版本遷移工具,目的就是解決該問題而誕生的(我自己想的)。每當(dāng)我們更新數(shù)據(jù)庫的時候,只需要添加SQL文件到指定目錄中。Flyway會在數(shù)據(jù)庫創(chuàng)建一個表,專門記錄已更新的SQL文件。當(dāng)我們下次執(zhí)行時則不會執(zhí)行已記錄并且執(zhí)行成功的SQL文件。
整合
maven
現(xiàn)在的Flyway的最新版本已經(jīng)到了6.4.2
。我用的是6.3.3
。
<!-- https://mvnrepository.com/artifact/org.flywaydb/flyway-core --> <dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> <version>6.3.3</version> </dependency>
application配置
搞定了Flyway的依賴后,修改一下SpringBoot的application.yml
或application.xml
配置。
spring: flyway: url: jdbc:MySQL://192.168.138.132:3306/hotel-server?useUnicode=true&characterEncoding=UTF-8 user: johnson password: 123456 table: flyway_schema_history enabled: true locations: classpath:db/migration clean-disabled: false
flyway配置詳解
url:連接數(shù)據(jù)庫的Url 默認(rèn)為spring.datasource.url
user:連接數(shù)據(jù)庫的賬號 默認(rèn)為spring.datasource.username
password:連接數(shù)據(jù)庫的密碼 默認(rèn)為spring.datasource.password
table:自定義數(shù)據(jù)庫版本管理表 默認(rèn)為 flyway_schema_history
enabled:是否開啟 默認(rèn)為開啟
locations:SQL文件存放路徑 默認(rèn) classpath:db/migration
SQL文件
上面的locations
參數(shù)配置的SQL文件存放路徑為 classpath:db/migration
,classpath
對應(yīng)的目錄就是resources
目錄,創(chuàng)建后的目錄如下圖:
SQL文件如上圖,SQL文件名必須為V1.0.x__xxx.sql
(注意:這里的下劃線為兩個_
,我也是掉坑了才知道),這樣可以對應(yīng)SQL更新的版本號。啟動了SpringBoot項目后,就會自動幫你執(zhí)行SQL文件,可以看到數(shù)據(jù)庫版本控制表中生成的數(shù)據(jù):
clean操作
Flyway的clean
操作:徹底清除已配置的架構(gòu),它將有效地為您提供一個全新的起點。所有對象(表,視圖,過程等)都將被刪除。
spring: flyway: clean-on-validation-error: true clean-disabled: false
clean-on-validation-error
:發(fā)生驗證的錯誤時是否執(zhí)行clean操作(如SQL執(zhí)行失敗),默認(rèn)false,生產(chǎn)中必須使用false。clean-disabled
:是否禁用clean操作,默認(rèn)false,生產(chǎn)中必須使用true
如果我們設(shè)置 clean-on-validation-error = true
,clean-disabled = false
。
當(dāng)我們的SQL文件執(zhí)行失敗,在數(shù)據(jù)庫版本控制表flyway_schema_history
會添加一條失敗的記錄,success字段為0,此時并不會執(zhí)行clean
操作。
當(dāng)把SQL文件修改正確并執(zhí)行完后,此時flyway_schema_history
會把失敗記錄的success字段由0改為1。并且會執(zhí)行clean
操作?。。。。≌麄€數(shù)據(jù)庫的表里面的數(shù)據(jù)都被清空了?。ǔ悄阍赟QL文件中添加了insert
操作)
其實在開發(fā)環(huán)境我也是不建議使用clean
,畢竟填數(shù)據(jù)也是要時間的。。。
總結(jié)
團(tuán)隊開發(fā)當(dāng)中的必備工具??!不過生產(chǎn)環(huán)境當(dāng)中記得把clean-disabled
改為true
看完這篇關(guān)于SpringBoot如何整合Flyway的文章,如果覺得文章內(nèi)容寫得不錯的話,可以把它分享出去給更多人看到。
當(dāng)前題目:SpringBoot如何整合Flyway
當(dāng)前網(wǎng)址:http://jinyejixie.com/article46/jpdihg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、外貿(mào)建站、企業(yè)建站、網(wǎng)頁設(shè)計公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)