最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Flyway詳解及Springboot集成Flyway的詳細(xì)教程

 更新時(shí)間:2020年07月25日 09:25:46   作者:Jennire_Q  
Flayway是一款數(shù)據(jù)庫版本控制管理工具,,支持?jǐn)?shù)據(jù)庫版本自動升級,Migrations可以寫成sql腳本,也可以寫在java代碼里。這篇文章主要介紹了Flyway詳解及Springboot集成Flyway的詳細(xì)教程的相關(guān)資料,需要的朋友可以參考下

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

Flyway最核心的就是用于記錄所有版本演化和狀態(tài)的MetaData表,F(xiàn)lyway首次啟動會創(chuàng)建默認(rèn)名為SCHEMA_VERSION的元素局表。 表中保存了版本,描述,要執(zhí)行的sql腳本等;

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

例如:V1__INIT_DATABASE.sql

上面的V 是默認(rèn)值, 可以通過

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

Migrate:

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

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

Clean:清除掉對應(yīng)數(shù)據(jù)庫Schema中所有的對象,包括表結(jié)構(gòu),視圖,存儲過程等,clean操作在dev 和 test階段很好用;

Info:用于打印所有的Migrations的詳細(xì)和狀態(tài)信息,也是通過MetaData和Migrations完成的,可以快速定位當(dāng)前的數(shù)據(jù)庫版本;

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

BaseLine:對已經(jīng)存在數(shù)據(jù)庫Schema結(jié)構(gòu)的數(shù)據(jù)庫一種解決方案。實(shí)現(xiàn)在非空數(shù)據(jù)庫新建MetaData表,并把Migrations應(yīng)用到該數(shù)據(jù)庫;也可以應(yīng)用到已有表結(jié)構(gòu)的數(shù)據(jù)庫中也可以實(shí)現(xiàn)添加Metadata表。

repair:repair操作能夠修復(fù)metaData表,該操作在metadata出現(xiàn)錯誤時(shí)很有用

用途:

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

使用Flayway:

1、引入flyway的依賴:

<dependency>
   <groupId>org.flywaydb</groupId>
   <artifactId>flyway-core</artifactId>
   <version>5.0.3</version>
  </dependency>
<plugin>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-maven-plugin</artifactId>
    <version>5.0.3</version>
   </plugin>

2、新建一個(gè)maven的Springboot項(xiàng)目,在配置文件中配置數(shù)據(jù)源信息:

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文件夾,并創(chuàng)建sql腳本文件:

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項(xiàng)目:

加載了sql腳本 。

5、查看數(shù)據(jù)庫:

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

flyway.tableflyway

6:flyway的一些其他配置:

flyway.baseline-description對執(zhí)行遷移時(shí)基準(zhǔn)版本的描述.
flyway.baseline-on-migrate當(dāng)遷移時(shí)發(fā)現(xiàn)目標(biāo)schema非空,而且?guī)в袥]有元數(shù)據(jù)的表時(shí),是否自動執(zhí)行基準(zhǔn)遷移,默認(rèn)false.
flyway.baseline-version開始執(zhí)行基準(zhǔn)遷移時(shí)對現(xiàn)有的schema的版本打標(biāo)簽,默認(rèn)值為1.
flyway.check-location檢查遷移腳本的位置是否存在,默認(rèn)false.
flyway.clean-on-validation-error當(dāng)發(fā)現(xiàn)校驗(yàn)錯誤時(shí)是否自動調(diào)用clean,默認(rèn)false.
flyway.enabled是否開啟flywary,默認(rèn)true.
flyway.encoding設(shè)置遷移時(shí)的編碼,默認(rèn)UTF-8.
flyway.ignore-failed-future-migration當(dāng)讀取元數(shù)據(jù)表時(shí)是否忽略錯誤的遷移,默認(rèn)false.
flyway.init-sqls當(dāng)初始化好連接時(shí)要執(zhí)行的SQL.
flyway.locations遷移腳本的位置,默認(rèn)db/migration.
flyway.out-of-order是否允許無序的遷移,默認(rèn)false.
flyway.password目標(biāo)數(shù)據(jù)庫的密碼.
flyway.placeholder-prefix設(shè)置每個(gè)placeholder的前綴,默認(rèn)${.
flyway.placeholder-replacementplaceholders是否要被替換,默認(rèn)true.
flyway.placeholder-suffix設(shè)置每個(gè)placeholder的后綴,默認(rèn)}.
flyway.placeholders.[placeholder name]設(shè)置placeholder的value
flyway.schemas設(shè)定需要flywary遷移的schema,大小寫敏感,默認(rèn)為連接默認(rèn)的schema.
flyway.sql-migration-prefix遷移文件的前綴,默認(rèn)為V.
flyway.sql-migration-separator遷移腳本的文件名分隔符,默認(rèn)__
flyway.sql-migration-suffix遷移腳本的后綴,默認(rèn)為.sql
flyway.tableflyway使用的元數(shù)據(jù)表名,默認(rèn)為schema_version
flyway.target遷移時(shí)使用的目標(biāo)版本,默認(rèn)為latest version
flyway.url遷移時(shí)使用的JDBC URL,如果沒有指定的話,將使用配置的主數(shù)據(jù)源
flyway.user遷移數(shù)據(jù)庫的用戶名
flyway.validate-on-migrate遷移時(shí)是否校驗(yàn),默認(rèn)為true.

flyway的入門就到這里,其他內(nèi)容后面再補(bǔ)上。

到此這篇關(guān)于Flyway詳解及Springboot集成Flyway的詳細(xì)教程的文章就介紹到這了,更多相關(guān)Flyway介紹 Springboot集成Flyway內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

庆元县| 孝感市| 壤塘县| 长治市| 滨州市| 云阳县| 黑龙江省| 德安县| 平山县| 阿坝| 英吉沙县| 炉霍县| 新昌县| 上思县| 合肥市| 板桥市| 安西县| 娱乐| 延长县| 建宁县| 麻城市| 和平县| 滨海县| 烟台市| 山阴县| 婺源县| 古蔺县| 桐梓县| 磴口县| 福鼎市| 邯郸市| 祥云县| 武威市| 龙山县| 东宁县| 卢湾区| 榆社县| 福建省| 巫山县| 闽清县| 祁东县|