一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Flyway詳解及Springboot集成Flyway的詳細教程

Flyway詳解及Springboot集成Flyway的詳細教程

2020-07-25 13:58Jennire_Q Java教程

這篇文章主要介紹了Flyway詳解及Springboot集成Flyway的詳細教程的相關資料,需要的朋友可以參考下

Flayway是一款數據庫版本控制管理工具,,支持數據庫版本自動升級,Migrations可以寫成sql腳本,也可以寫在java代碼里;不僅支持Command Line和java api ,也支持Build構建工具和Spring boot,也可以在分布式環境下能夠安全可靠安全地升級數據庫,同時也支持失敗恢復。

Flyway最核心的就是用于記錄所有版本演化和狀態的MetaData表,Flyway首次啟動會創建默認名為SCHEMA_VERSION的元素局表。 表中保存了版本,描述,要執行的sql腳本等;

sql腳本的格式:V+版本號 +雙下劃線+秒速+結束符 

例如:V1__INIT_DATABASE.sql

上面的V 是默認值, 可以通過

 flyway.sql-migration-prefix來指定前綴

Migrate:

Migrate是指把數據Schema遷移到最新版本,在Migrate時會檢查MetaData元數據表,如果不存在就創建MetaData表,MetaData用于記錄數據庫歷史變更等信息;

Migrate會掃描指定文件系統或者classpath下的Migrations。會與MetaData中的記錄進行對比,進行版本升級;

Clean:清除掉對應數據庫Schema中所有的對象,包括表結構,視圖,存儲過程等,clean操作在dev 和 test階段很好用;

Info:用于打印所有的Migrations的詳細和狀態信息,也是通過MetaData和Migrations完成的,可以快速定位當前的數據庫版本;

validate:驗證以及apply的Migrations是否有變更,默認開啟的;原理是對比MetaData表與本地Migrations的checkNum值,如果值相同則驗證通過,否則失敗。

BaseLine:對已經存在數據庫Schema結構的數據庫一種解決方案。實現在非空數據庫新建MetaData表,并把Migrations應用到該數據庫;也可以應用到已有表結構的數據庫中也可以實現添加Metadata表。

repair:repair操作能夠修復metaData表,該操作在metadata出現錯誤時很有用

用途:

  1):移除失敗的Migration記錄,只針對不支持DDL事務的數據庫

使用Flayway:

1、引入flyway的依賴:

?
1
2
3
4
5
<dependency>
      <groupId>org.flywaydb</groupId>
      <artifactId>flyway-core</artifactId>
      <version>5.0.3</version>
    </dependency>
?
1
2
3
4
5
<plugin>
        <groupId>org.flywaydb</groupId>
        <artifactId>flyway-maven-plugin</artifactId>
        <version>5.0.3</version>
      </plugin>

2、新建一個maven的Springboot項目,在配置文件中配置數據源信息:

?
1
2
3
4
5
server.port=8088
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

3、在classpath下新建/db/migration文件夾,并創建sql腳本文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
use testdb;
 
CREATE TABLE person (
 id int(11) NOT NULL AUTO_INCREMENT,
 first varchar(100) NOT NULL,
 last varchar(100) NOT NULL,
 dateofbirth DATE DEFAULT null,
 placeofbirth varchar(100) not null,
 PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
insert into person (first,last,dateofbirth,placeofbirth) values('Dursun','KOC', STR_TO_DATE('02/10/1982', '%m/%d/%Y'),'Erzincan');
insert into person (first,last,dateofbirth,placeofbirth) values('Durseeun','KeeOC', STR_TO_DATE('05/10/1982', '%m/%d/%Y'),'Erzeeincan');

4、啟動springboot項目:

Flyway詳解及Springboot集成Flyway的詳細教程

加載了sql腳本 。

5、查看數據庫:

生成了flyway-schema-history表,這個版本默認是這個表,如果想自己指定schema表的命,可以設置:

?
1
flyway.tableflyway

6:flyway的一些其他配置:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
flyway.baseline-description對執行遷移時基準版本的描述.
flyway.baseline-on-migrate當遷移時發現目標schema非空,而且帶有沒有元數據的表時,是否自動執行基準遷移,默認false.
flyway.baseline-version開始執行基準遷移時對現有的schema的版本打標簽,默認值為1.
flyway.check-location檢查遷移腳本的位置是否存在,默認false.
flyway.clean-on-validation-error當發現校驗錯誤時是否自動調用clean,默認false.
flyway.enabled是否開啟flywary,默認true.
flyway.encoding設置遷移時的編碼,默認UTF-8.
flyway.ignore-failed-future-migration當讀取元數據表時是否忽略錯誤的遷移,默認false.
flyway.init-sqls當初始化好連接時要執行的SQL.
flyway.locations遷移腳本的位置,默認db/migration.
flyway.out-of-order是否允許無序的遷移,默認false.
flyway.password目標數據庫的密碼.
flyway.placeholder-prefix設置每個placeholder的前綴,默認${.
flyway.placeholder-replacementplaceholders是否要被替換,默認true.
flyway.placeholder-suffix設置每個placeholder的后綴,默認}.
flyway.placeholders.[placeholder name]設置placeholder的value
flyway.schemas設定需要flywary遷移的schema,大小寫敏感,默認為連接默認的schema.
flyway.sql-migration-prefix遷移文件的前綴,默認為V.
flyway.sql-migration-separator遷移腳本的文件名分隔符,默認__
flyway.sql-migration-suffix遷移腳本的后綴,默認為.sql
flyway.tableflyway使用的元數據表名,默認為schema_version
flyway.target遷移時使用的目標版本,默認為latest version
flyway.url遷移時使用的JDBC URL,如果沒有指定的話,將使用配置的主數據源
flyway.user遷移數據庫的用戶名
flyway.validate-on-migrate遷移時是否校驗,默認為true.

flyway的入門就到這里,其他內容后面再補上。

到此這篇關于Flyway詳解及Springboot集成Flyway的詳細教程的文章就介紹到這了,更多相關Flyway介紹 Springboot集成Flyway內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/qiuhao9527/article/details/81070482

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 娇妻被又大又粗又长又硬好爽 | bt天堂在线最新版www | 亚洲大片免费观看 | 亚洲天堂在线视频观看 | 午夜福利合集1000在线 | 亚瑟天堂久久一区二区影院 | 国产精品原创视频 | 欧美激情精品久久久久久不卡 | 国内精品 大秀视频 日韩精品 | 国产精品久久久久一区二区三区 | 日本高清色视频www 日本高清免费观看 | 国产综合色在线视频区色吧图片 | 久久青青草原 | 国产大胆歌舞团网站 | 四虎影视入口 | 91交换论坛 | 91精品国产91久久久久久 | 精品欧美一区二区在线观看欧美熟 | 国产白白视频在线观看2 | 午夜看片a福利在线观看 | 国产欧美一区二区精品久久久 | 国士李风起全文在线阅读 | 色婷婷久久综合中文久久一本 | 99久久免费国产香蕉麻豆 | 日日骑夜夜骑 | 亚洲第一综合天堂另类专 | 欧美亚洲国产另类 | 美女一级ba大片免色 | 91tv在线| 日本护士xxxx视频免费 | 日本激情网 | 久久99精品久久久久久园产越南 | 校花被老头夺去第一次动图 | 性伴交换多p | 污网站免费观看在线高清 | 4虎影视国产在线观看精品 4s4s4s4s色大众影视 | 日韩一品在线播放视频一品免费 | 色综合久久日韩国产 | 大陆性出航 | ckinese中国男同gay男男 | 日处女b|