成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

優(yōu)雅!Spring Boot使用Flyway進(jìn)行數(shù)據(jù)庫(kù)腳本遷移管理

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù)
Flyway是一個(gè)開(kāi)源的數(shù)據(jù)庫(kù)遷移工具,它通過(guò)定義一系列有序的SQL腳本(稱(chēng)為遷移),幫助你管理數(shù)據(jù)庫(kù)的結(jié)構(gòu)變更。這些遷移腳本可以用于創(chuàng)建表、修改列、添加索引等任何數(shù)據(jù)庫(kù)更改操作。

環(huán)境:SpringBoot2.7.18 + Flyway8.5.13

1. 簡(jiǎn)介

Flyway是一個(gè)開(kāi)源的數(shù)據(jù)庫(kù)遷移工具,它通過(guò)定義一系列有序的SQL腳本(稱(chēng)為遷移),幫助你管理數(shù)據(jù)庫(kù)的結(jié)構(gòu)變更。這些遷移腳本可以用于創(chuàng)建表、修改列、添加索引等任何數(shù)據(jù)庫(kù)更改操作。Flyway的主要特性和優(yōu)勢(shì)包括:

  • 版本控制:Flyway為數(shù)據(jù)庫(kù)的每個(gè)變更分配一個(gè)版本號(hào),只有新的變更才會(huì)被應(yīng)用,已經(jīng)應(yīng)用過(guò)的變更不會(huì)重復(fù)執(zhí)行。這使得數(shù)據(jù)庫(kù)變更更加可控和可追蹤。
  • 跨平臺(tái):Flyway支持主流的關(guān)系型數(shù)據(jù)庫(kù),包括MySQL、PostgreSQL、Oracle、SQL Server等。
  • 易用性:Flyway提供了簡(jiǎn)單的命令行界面和API,使得開(kāi)發(fā)人員可以輕松地集成到他們的項(xiàng)目中。同時(shí),它還支持與Spring Boot等主流開(kāi)發(fā)框架進(jìn)行集成。
  • 自動(dòng)化:Flyway可以自動(dòng)化執(zhí)行數(shù)據(jù)庫(kù)遷移,這使得敏捷開(kāi)發(fā)團(tuán)隊(duì)可以更快地開(kāi)發(fā)新功能,同時(shí)也可以更容易地進(jìn)行測(cè)試和部署。

在實(shí)際項(xiàng)目開(kāi)發(fā)中通過(guò)Flyway可以確保每個(gè)數(shù)據(jù)庫(kù)變更都有一個(gè)唯一的版本號(hào),并按照版本號(hào)順序執(zhí)行,從而避免了重復(fù)或錯(cuò)亂的變更。這使得開(kāi)發(fā)人員能夠清晰地跟蹤和管理數(shù)據(jù)庫(kù)的歷史變更,并確保不同環(huán)境(如開(kāi)發(fā)、測(cè)試和生產(chǎn))之間的數(shù)據(jù)庫(kù)結(jié)構(gòu)一致性。

2. 實(shí)戰(zhàn)案例

注意:我當(dāng)前使用的版本Flyway對(duì)應(yīng)的數(shù)據(jù)庫(kù)mysql版本必須是8。

2.1 引入依賴(lài)

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

2.2 配置數(shù)據(jù)庫(kù)

spring:
  datasource:
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/pack?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=UTF-8
    username: root
    password: xxxooo
    type: com.zaxxer.hikari.HikariDataSource

2.3 Flyway配置

spring:
  flyway:
    enabled: true
    # 用于存儲(chǔ)遷移歷史記錄的表名, 默認(rèn): flyway_schema_history
    table: flyway_schema_history
    # 遷移腳本編碼, 默認(rèn): UTF-8
    encoding: UTF-8
    # 當(dāng)遷移數(shù)據(jù)庫(kù)存在但沒(méi)有元數(shù)據(jù)的表時(shí),自動(dòng)執(zhí)行基準(zhǔn)遷移,新建flyway_schema_history表
    baseline-on-migrate: true
    # 數(shù)據(jù)庫(kù)遷移腳本的位置, 默認(rèn): classpath:db/migration
    # 這里也支持文件系統(tǒng)路徑,前綴:filesystem:
    locations:
    - classpath:db/migration

上面的配置都使用的默認(rèn)值,如果你沒(méi)有自定義需求,你完全可以不進(jìn)行配置。

最終項(xiàng)目目錄結(jié)構(gòu)如下:

圖片圖片

初始數(shù)據(jù)庫(kù)中有如下表:

圖片圖片

2.4 準(zhǔn)備數(shù)據(jù)庫(kù)升級(jí)腳本

接下來(lái)在db/migration下新建一個(gè)遷移腳本(升級(jí)),文件名:V1.0_001__create_table.sql

create table t_person (
  id int auto_increment primary key,
  name varchar(32) not null,
  sex varchar(2) not null,
  age int default 0
);

創(chuàng)建表t_person。

特別說(shuō)明:通常情況下,遷移腳本的格式為 V<VERSION>__<NAME>.sql(其中 <VERSION> 為下劃線分隔的版本,如 "1 "或 "2_1";<NAME>一般你可以寫(xiě)上該腳本的描述信息)。還有一點(diǎn)要注意:<VERSION>與<NAME>中間是兩個(gè)下劃線:'__',最終目錄如下:

圖片圖片

到此所有的配置都完成,接下來(lái)只需要啟動(dòng)服務(wù)即可。

2.5 啟動(dòng)應(yīng)用服務(wù)

控制臺(tái)輸出

圖片圖片

通過(guò)控制臺(tái)輸出,得到下面兩個(gè)重要信息:

  1. 創(chuàng)建表flyway_schema_history
  2. 成功升級(jí)一個(gè)腳本版本是v1.0.001

查看數(shù)據(jù)庫(kù)情況

圖片

執(zhí)行了升級(jí)腳本,創(chuàng)建了數(shù)據(jù)庫(kù)。查看flyway_schema_history表數(shù)據(jù):

圖片

記錄了升級(jí)腳本文件及版本信息。當(dāng)多次啟動(dòng)服務(wù)并不會(huì)重復(fù)的執(zhí)行。如果你將這里的記錄刪除再吧t_person表刪除,那么下次重啟服務(wù)還會(huì)執(zhí)行升級(jí)腳本。

經(jīng)過(guò)xxx時(shí)間后系統(tǒng)升級(jí)數(shù)據(jù)庫(kù)腳本也升級(jí)了,我們可以繼續(xù)添加升級(jí)腳本文件,如下:

圖片圖片

新增了一個(gè)腳本文件V1.1_001__update-t_person.sql,文件內(nèi)容:

alter table t_person add column email varchar(32) default '';

啟動(dòng)服務(wù),控制臺(tái)輸出:

圖片圖片

升級(jí)記錄表中新增了一條記錄

圖片圖片

到此一個(gè)簡(jiǎn)單的Flyway應(yīng)用就完成了,接下來(lái)我們繼續(xù)Flyway在SpringBoot中更多用法。

3. Flyway其它用法

3.1 指定數(shù)據(jù)庫(kù)類(lèi)型

我們可以通過(guò)如下配置來(lái)設(shè)置具體數(shù)據(jù)庫(kù)類(lèi)型的腳本路徑

spring:
  flyway:
    locations:
    - classpath:db/migration/{vendor}

通過(guò){vendor}占位符,該占位符會(huì)更加你當(dāng)前環(huán)境的數(shù)據(jù)庫(kù)類(lèi)型自動(dòng)替換,我們只需要在對(duì)應(yīng)的路徑下建立文件夾及升級(jí)文件即可,如下:

圖片圖片

3.2 使用其它數(shù)據(jù)庫(kù)

在默認(rèn)情況下,F(xiàn)lyway使用的是你當(dāng)前環(huán)境中主數(shù)據(jù)源(存在多個(gè)的時(shí)候,應(yīng)用@Primary標(biāo)記的數(shù)據(jù)源),我們可以通過(guò)如下兩種方式使用其它數(shù)據(jù)源(多數(shù)據(jù)源情況下):

  • 自定義FlywayDataSource
@Bean
@FlywayDataSource
DataSource flywayDataSource() {
  HikariDataSource dataSource = new HikariDataSource();
  dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/msg?serverTimeznotallow=GMT%2B8&nullCatalogMeansCurrent=true&useSSL=false&characterEncoding=UTF-8");
  dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
  dataSource.setUsername("root");
  dataSource.setPoolName("flyway") ;
  dataSource.setPassword("xxxooo");
  return dataSource ;
}

通過(guò)使用@FlywayDataSource注解。

  • 定義flyway數(shù)據(jù)源信息
spring:
  flyway:
    user: root
    password: xxxooo
    url: jdbc:mysql://localhost:3306/msg?serverTimeznotallow=GMT%2B8&nullCatalogMeansCurrent=true&useSSL=false

通過(guò)spring.flyway.*指定flyway自己的數(shù)據(jù)源。

責(zé)任編輯:武曉燕 來(lái)源: Spring全家桶實(shí)戰(zhàn)案例源碼
相關(guān)推薦

2017-12-27 15:16:35

Spring BootFlyway數(shù)據(jù)庫(kù)

2020-08-13 07:42:15

數(shù)據(jù)庫(kù)Flyway代碼

2019-10-30 11:28:56

Javaflyway數(shù)據(jù)庫(kù)

2021-03-09 17:11:09

數(shù)據(jù)庫(kù)腳手架開(kāi)發(fā)

2021-06-29 17:19:44

Spring Boot集成Flyway

2022-04-08 11:25:58

數(shù)據(jù)庫(kù)操作AbilityData

2021-12-27 09:50:03

JavaScript開(kāi)發(fā)數(shù)據(jù)分組

2021-05-17 08:00:00

數(shù)據(jù)庫(kù)工具Flyway

2011-03-17 13:23:08

數(shù)據(jù)導(dǎo)入導(dǎo)出

2022-06-02 13:59:57

數(shù)據(jù)遷移數(shù)據(jù)

2009-08-25 16:36:16

C#進(jìn)行數(shù)據(jù)庫(kù)編程

2009-07-01 10:46:57

JSP程序JSP代碼

2011-05-25 00:00:00

數(shù)據(jù)庫(kù)設(shè)計(jì)

2024-04-03 10:05:02

2024-12-06 09:27:28

2009-03-16 13:30:55

腳本數(shù)據(jù)字典Oracle

2010-03-30 18:48:24

Oracle 學(xué)習(xí)

2011-12-30 09:03:59

MySQL數(shù)據(jù)庫(kù)

2011-03-01 16:30:55

Oracle

2017-10-31 11:55:46

sklearn數(shù)據(jù)挖掘自動(dòng)化
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日本午夜视频 | 伊人狠狠| 在线观看av网站 | 精品国产视频 | 黄色激情毛片 | 成人在线视频免费观看 | 成人影院一区二区三区 | 网色| 亚洲美女网站 | 国产精品中文字幕一区二区三区 | aaa在线观看 | 国产精品99久久久久久人 | 中文字幕一区在线 | 久草青青草 | 在线精品一区二区 | 91pao对白在线播放 | 国产精品一区二区在线播放 | 色约约视频 | 日韩一区二区三区在线观看 | 欧美精品一区二区三区在线播放 | 成人免费毛片片v | 国产在线小视频 | 亚洲精品九九 | 亚洲一区国产精品 | 岛国精品| 亚洲第一天堂 | 亚洲成人激情在线观看 | 精品久久国产 | 在线精品观看 | 日韩欧美精品 | 欧美电影网 | 日韩免费视频一区二区 | 亚洲精品第一页 | 一级欧美一级日韩片免费观看 | 综合九九| 欧产日产国产精品视频 | 国产视频久久久 | 亚洲国产成人av | 国产精品嫩草影院精东 | 国产精品观看 | 欧美一区二区三区四区视频 |