亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

例如:V1__INIT_DATABASE.sql

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

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

Migrate:

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

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

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

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

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

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

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

用途:

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

使用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、啟動(dòng)springboot項(xiàng)目:

加載了sql腳本 。

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

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

flyway.tableflyway

6:flyway的一些其他配置:

flyway.baseline-description對(duì)執(zhí)行遷移時(shí)基準(zhǔn)版本的描述.
flyway.baseline-on-migrate當(dāng)遷移時(shí)發(fā)現(xiàn)目標(biāo)schema非空,而且?guī)в袥]有元數(shù)據(jù)的表時(shí),是否自動(dòng)執(zhí)行基準(zhǔn)遷移,默認(rèn)false.
flyway.baseline-version開始執(zhí)行基準(zhǔn)遷移時(shí)對(duì)現(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)錯(cuò)誤時(shí)是否自動(dòng)調(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í)是否忽略錯(cuò)誤的遷移,默認(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ù)庫(kù)的密碼.
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ù)庫(kù)的用戶名
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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java @Deprecated注解的作用及傳遞性

    Java @Deprecated注解的作用及傳遞性

    用 @Deprecated注解的程序元素,不鼓勵(lì)程序員使用這樣的元素,通常是因?yàn)樗芪kU(xiǎn)或存在更好的選擇,本文給大家介紹java @deprecated注解的作用及傳遞性,對(duì)本文感興趣的朋友一起學(xué)習(xí)吧
    2015-12-12
  • 詳解SpringBoot+Mybatis實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源切換

    詳解SpringBoot+Mybatis實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源切換

    這篇文章主要介紹了詳解SpringBoot+Mybatis實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源切換,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • SpringBoot生成和操作PDF的代碼詳解

    SpringBoot生成和操作PDF的代碼詳解

    本文主要介紹了在SpringBoot項(xiàng)目下,通過代碼和操作步驟,詳細(xì)的介紹了如何操作PDF,希望可以幫助到準(zhǔn)備通過JAVA操作PDF的你,項(xiàng)目框架用的SpringBoot,但在JAVA中代碼都是通用的,需要的朋友可以參考下
    2025-01-01
  • SpringBoot請(qǐng)求參數(shù)加密、響應(yīng)參數(shù)解密的實(shí)現(xiàn)

    SpringBoot請(qǐng)求參數(shù)加密、響應(yīng)參數(shù)解密的實(shí)現(xiàn)

    在項(xiàng)目開發(fā)工程中,有的項(xiàng)目可能對(duì)參數(shù)安全要求比較高,在整個(gè)http數(shù)據(jù)傳輸?shù)倪^程中都需要對(duì)請(qǐng)求參數(shù)、響應(yīng)參數(shù)進(jìn)行加密,本文主要介紹了SpringBoot請(qǐng)求參數(shù)加密、響應(yīng)參數(shù)解密的實(shí)現(xiàn),感興趣的可以了解一下
    2024-01-01
  • Mybatis-Plus自動(dòng)填充的實(shí)現(xiàn)示例

    Mybatis-Plus自動(dòng)填充的實(shí)現(xiàn)示例

    這篇文章主要介紹了Mybatis-Plus自動(dòng)填充的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • SpringBoot入門系列之JPA mysql

    SpringBoot入門系列之JPA mysql

    這篇文章主要介紹了SpringBoot入門系列之JPA mysql的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • SpringBoot連接Redis2種模式解析

    SpringBoot連接Redis2種模式解析

    這篇文章主要介紹了SpringBoot連接Redis2種模式解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • java?MultipartFile文件上傳重命名詳細(xì)代碼示例

    java?MultipartFile文件上傳重命名詳細(xì)代碼示例

    在文件上傳功能開發(fā)中,為防止文件重名導(dǎo)致數(shù)據(jù)覆蓋,常見的做法是在文件名前加上UUID或時(shí)間戳來區(qū)分,這篇文章主要介紹了java?MultipartFile?multipartFile文件上傳重命名的相關(guān)資料,需要的朋友可以參考下
    2024-09-09
  • java如何實(shí)現(xiàn)postman中用x-www-form-urlencoded參數(shù)的請(qǐng)求

    java如何實(shí)現(xiàn)postman中用x-www-form-urlencoded參數(shù)的請(qǐng)求

    在Java開發(fā)中,模擬Postman發(fā)送x-www-form-urlencoded類型的請(qǐng)求是一個(gè)常見需求,本文主要介紹了如何在Java中實(shí)現(xiàn)這一功能,首先,需要通過導(dǎo)入http-client包來創(chuàng)建HTTP客戶端,接著,利用該客戶端發(fā)送Post請(qǐng)求
    2024-09-09
  • Java利用EasyExcel實(shí)現(xiàn)導(dǎo)出導(dǎo)入功能的示例代碼

    Java利用EasyExcel實(shí)現(xiàn)導(dǎo)出導(dǎo)入功能的示例代碼

    EasyExcel是一個(gè)基于Java的、快速、簡(jiǎn)潔、解決大文件內(nèi)存溢出的Excel處理工具。本文廢話不多說,直接上手試試,用代碼試試EasyExcel是否真的那么好用
    2022-11-11

最新評(píng)論