亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

Spring Boot項目使用Flyway的詳細(xì)教程

瀏覽:9日期:2022-08-28 11:03:46

Purpose

開發(fā)人員在合作的時候經(jīng)常遇到以下場景:

1.開發(fā)人員A在自己的本地數(shù)據(jù)庫做了一些表結(jié)構(gòu)的改動,并根據(jù)這些改動調(diào)整了DAO層的代碼,然后將代碼上傳到svn或git等版本控制服務(wù)器上。此時如果開發(fā)人員B拉取了A的代碼改動,在運行項目的時候很可能會報錯,因為B的本地SQL數(shù)據(jù)庫并沒有修改。

2.在項目上線的時候,當(dāng)服務(wù)器拉取的版本控制服務(wù)器的最新修改后,必須同時運行SQL數(shù)據(jù)庫的修改腳本,如果忘了跑數(shù)據(jù)庫腳本,那么會出現(xiàn)嚴(yán)重的問題。

傳統(tǒng)的解決方案就是在一個固定的文件夾中,將需要跑的SQL腳本放在里面。開發(fā)人員在合作的時候,A修改了數(shù)據(jù)庫,在B遇到問題的時候,可能需要交流溝通一下,去跑需要的腳本。在項目上線的過程中,也是運維人員在規(guī)定的文件夾中,找到需要跑的SQL腳本。運行它們。

Flyway等migration工具就是要把開發(fā)人員和運維人員從以上這些場景的繁瑣工作中解放出來,如果使用maven的話,那么在項目編譯(SpringBoot運行Application)的時候,SQL數(shù)據(jù)庫的改動就自動進(jìn)入數(shù)據(jù)庫,只要啟動成功,開發(fā)或者運維人員對SQL數(shù)據(jù)庫的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.下載demo源碼:

git clone https://git.oschina.net/dreamingodd/spring-boot-flyway-demo.git

2.使用Intellij或Eclipse import existing maven project。

3.在本地mysql console中運行:

create database flyway_test;use flyway_test;

4.修改配置文件,將username和password改成本地MySQL數(shù)據(jù)庫的。

Spring Boot項目使用Flyway的詳細(xì)教程

5.運行FlywayTestApplication類。

6.在mysql console中運行

show tables;

即可看到以下結(jié)果:

Spring Boot項目使用Flyway的詳細(xì)教程

(schema_version表保存了數(shù)據(jù)庫版本信息,哪些腳本已經(jīng)被執(zhí)行,先不用管)

7.一張demo表被自動創(chuàng)建出來了。

What Happened

以上過程是如何實現(xiàn)的呢?

Flyway在maven項目編譯(SpringBoot運行Application)的時候,自動掃描resources/db/migration目錄下的文件,

Spring Boot項目使用Flyway的詳細(xì)教程

打開V1_demo.sql:

Spring Boot項目使用Flyway的詳細(xì)教程

就是剛剛自動運行的SQL腳本。添加腳本的話,依次使用V2__XXX.sql,V3__XXX.sql,以此類推,腳本中使用正常的SQL語句即可,沒有任何學(xué)習(xí)負(fù)擔(dān)。

這樣,在開發(fā)人員合作以及項目部署的時候,F(xiàn)lyway就起到了加強自動化部署、實踐持續(xù)交付等作用。

Instruction - Use in Current Project

那么如何在已經(jīng)開發(fā)了一段時間的項目中使用Flyway呢?

1.Maven配置

<dependencies>中加上

<dependency><groupId>org.flywaydb</groupId><artifactId>flyway-core</artifactId><version>4.0.3</version></dependency>

<build>中加上

<plugin> <groupId>org.flywaydb</groupId> <artifactId>flyway-maven-plugin</artifactId> <version>4.0.3</version></plugin>

2.application.properties配置

flyway.baselineOnMigrate=true

如果是application.yml,則為

flyway.baselineOnMigrate: true

3.在resources/db/migration中添加V1__XXX.sql,mvn compile(運行Application)即可看到SQL腳本運行結(jié)果。(注意V1后面是兩個下劃線)

Appendix

1.出現(xiàn)錯誤的解決方法:

如果你的SQL腳本運行失敗,到schema_version表中刪除最新一條數(shù)據(jù),

比如我故意寫一個錯誤的SQL語句到V2__demo2.sql,運行mvn compile(運行Application)。

Spring Boot項目使用Flyway的詳細(xì)教程

可以看到最新一條的success列為false。

如果部分成功了,要手動rollback,修改SQL腳本正確后再次mvn compile(運行Application)。

2.更多信息請訪問官網(wǎng):https://flywaydb.org/

到此這篇關(guān)于Spring Boot項目使用Flyway的文章就介紹到這了,更多相關(guān)Spring Boot使用Flyway內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 久草一区| 91免费高清视频 | 欧美三黑人一级特黄曰皮 | 欧美亚洲性色影视在线 | 国产欧美国产精品第二区 | 欧美欧美aaaaa一级毛片 | 精品小视频在线观看 | 国产精品思瑞在线观看 | 国产精品免费观看视频 | 一级国产在线观看高清 | 国产高清好大好夹受不了了 | 国产亚洲视频在线播放大全 | 欧美一区二区三区网站 | 精品哟啊呦v视频在线观看 精品哟哟国产在线观看 | 国产精品久久久久久久y | 慈禧级淫片a级中文在线 | 18禁片一级毛片视频播放免费看 | 国产精品1页 | 欧美日韩在线视频免费完整 | 国产精品国产三级国产专播下 | 2021国产成人午夜精品 | 国产精品国产精品国产专区不卡 | 欧美 日韩 国产 成人 在线观看 | 麻豆污视频| 日韩一级片免费观看 | 哪里可以免费看毛片 | 一级特黄录像实干片 | 色妞www精品视频免费看 | 日韩欧美中文字幕在线视频 | 色婷婷综合激情 | 欧美精品久久久久久久影视 | 久久久久久久国产精品毛片 | 青草香蕉精品视频在线观看 | 看免费毛片 | 国产麻豆剧传媒精品网站 | 欧美成人精品第一区 | 爱爱男女在线观看视频高清 | 一级a毛片免费观看 | 成人精品一级毛片 | 爱爱视频免费网站 | 青青草国产精品人人爱99 |