二求厕、Springboot與flyway的結(jié)合使用(轉(zhuǎn)載)

轉(zhuǎn)載知乎帖子https://zhuanlan.zhihu.com/p/304110137著隆,帖子寫的很好,淺顯易懂

Flyway簡介

Flyway 是一款開源的數(shù)據(jù)庫版本管理工具呀癣。它可以很方便的在命令行中使用美浦,或者在Java應(yīng)用程序中引入,用于管理我們的數(shù)據(jù)庫版本项栏。

在項目或產(chǎn)品中浦辨,很難一開始就把業(yè)務(wù)理清楚,把數(shù)據(jù)庫表設(shè)計好沼沈,因此數(shù)據(jù)表也會在迭代周期不斷迭代荤牍。在Java應(yīng)用程序中使用Flyway案腺,能快速有效地用于迭代數(shù)據(jù)庫表結(jié)構(gòu),并保證部署到測試環(huán)境或生產(chǎn)環(huán)境時康吵,數(shù)據(jù)表都是保持一致的劈榨。

Flyway支持的數(shù)據(jù)庫很多,從官網(wǎng)摘抄如下:

Supported databases are Oracle, SQL Server (including Amazon RDS and Azure SQL Database), Azure Synapse (Formerly Data Warehouse), DB2, MySQL (including Amazon RDS, Azure Database & Google Cloud SQL), Aurora MySQL, MariaDB, Percona XtraDB Cluster, TestContainers, PostgreSQL (including Amazon RDS, Azure Database, Google Cloud SQL & Heroku), Aurora PostgreSQL, Redshift, CockroachDB, SAP HANA, Sybase ASE, Informix, H2, HSQLDB, Derby, Snowflake, SQLite and Firebird.

更多的特性晦嵌,可直接在官網(wǎng)上查詢同辣,這里不再一一羅列。

Flyway是如何工作的

Flyway工作流程如下:

1惭载、項目啟動旱函,應(yīng)用程序完成數(shù)據(jù)庫連接池的建立后,F(xiàn)lyway自動運行描滔。

2棒妨、初次使用時,F(xiàn)lyway會創(chuàng)建一個flyway_schema_history表含长,用于記錄sql執(zhí)行記錄券腔。

3、Flyway會掃描項目指定路徑下(默認(rèn)是classpath:db/migration)的所有sql腳本拘泞,與flyway_schema_history表腳本記錄進行比對纷纫。如果數(shù)據(jù)庫記錄執(zhí)行過的腳本記錄,與項目中的sql腳本不一致陪腌,F(xiàn)lyway會報錯并停止項目執(zhí)行辱魁。

4、如果校驗通過诗鸭,則根據(jù)表中的sql記錄最大版本號染簇,忽略所有版本號不大于該版本的腳本。再按照版本號從小到大强岸,逐個執(zhí)行其余腳本剖笙。

在SpringBoot項目使用Flyway

以下演示如何在SpringBoot項目中使用Flyway,代碼保存我的Github倉庫请唱。

1、初始化一個SpringBoot項目过蹂,引入MySQL數(shù)據(jù)庫驅(qū)動依賴等十绑,并且需要引入Flyway依賴:

<!--引入flyway-->
<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
    <version>6.1.0</version>
</dependency>

2、添加Flyway配置:

spring:
  # 數(shù)據(jù)庫連接配置
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ssm-demo?characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
    username: xxx
    password: xxx
  flyway:
    # 是否啟用flyway
    enabled: true
    # 編碼格式酷勺,默認(rèn)UTF-8
    encoding: UTF-8
    # 遷移sql腳本文件存放路徑本橙,默認(rèn)db/migration
    locations: classpath:db/migration
    # 遷移sql腳本文件名稱的前綴,默認(rèn)V
    sql-migration-prefix: V
    # 遷移sql腳本文件名稱的分隔符脆诉,默認(rèn)2個下劃線__
    sql-migration-separator: __
    # 遷移sql腳本文件名稱的后綴
    sql-migration-suffixes: .sql
    # 遷移時是否進行校驗甚亭,默認(rèn)true
    validate-on-migrate: true
    # 當(dāng)遷移發(fā)現(xiàn)數(shù)據(jù)庫非空且存在沒有元數(shù)據(jù)的表時贷币,自動執(zhí)行基準(zhǔn)遷移,新建schema_version表
    baseline-on-migrate: true

3亏狰、根據(jù)在配置文件的腳本存放路徑的配置役纹,在resource目錄下建立文件夾db/migration

4暇唾、添加需要運行的sql腳本促脉。sql腳本的命名規(guī)范為:V+版本號(版本號的數(shù)字間以”.“或”_“分隔開)+雙下劃線(用來分隔版本號和描述)+文件描述+后綴名,例如:V20201100__create_user.sql策州。如圖所示:

[圖片上傳失敗...(image-a09551-1628589723263)]

5瘸味、啟動項目。啟動成功后够挂,在數(shù)據(jù)庫中可以看到已按照定義好的腳本旁仿,完成數(shù)據(jù)庫變更,并在flyway_schema_history表插入了sql執(zhí)行記錄:

image.png

創(chuàng)建成功的表

image.png

sql執(zhí)行記錄

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末孽糖,一起剝皮案震驚了整個濱河市枯冈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌梭姓,老刑警劉巖霜幼,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異誉尖,居然都是意外死亡罪既,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門铡恕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來琢感,“玉大人,你說我怎么就攤上這事探熔【哉耄” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵诀艰,是天一觀的道長柬甥。 經(jīng)常有香客問我,道長其垄,這世上最難降的妖魔是什么苛蒲? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮绿满,結(jié)果婚禮上臂外,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好漏健,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布嚎货。 她就那樣靜靜地躺著,像睡著了一般蔫浆。 火紅的嫁衣襯著肌膚如雪殖属。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天克懊,我揣著相機與錄音忱辅,去河邊找鬼。 笑死谭溉,一個胖子當(dāng)著我的面吹牛墙懂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播扮念,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼损搬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了柜与?” 一聲冷哼從身側(cè)響起巧勤,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎弄匕,沒想到半個月后颅悉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡迁匠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年剩瓶,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片城丧。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡延曙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出亡哄,到底是詐尸還是另有隱情枝缔,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布蚊惯,位于F島的核電站愿卸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏截型。R本人自食惡果不足惜趴荸,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望菠劝。 院中可真熱鬧,春花似錦、人聲如沸赶诊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舔痪。三九已至寓调,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锄码,已是汗流浹背夺英。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留滋捶,地道東北人痛悯。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像重窟,于是被迫代替她去往敵國和親载萌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353