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

SpringBoot中使用Flyway進(jìn)行數(shù)據(jù)庫遷移的詳細(xì)流程

 更新時(shí)間:2025年02月17日 10:08:36   作者:一口酥Hac  
本文介紹了如何在Spring Boot項(xiàng)目中使用Flyway進(jìn)行數(shù)據(jù)庫遷移,Flyway通過SQL腳本管理數(shù)據(jù)庫變更,支持自動執(zhí)行和版本控制,避免了手動執(zhí)行SQL腳本的錯(cuò)誤和維護(hù)困難,需要的朋友可以參考下

概要

在 Spring Boot 項(xiàng)目開發(fā)中,數(shù)據(jù)庫的變更不可避免。手動執(zhí)行 SQL 腳本不僅容易出錯(cuò),也難以維護(hù)數(shù)據(jù)庫版本的一致性。Flyway 作為一款輕量級的數(shù)據(jù)庫遷移工具,能夠幫助我們優(yōu)雅地解決這些問題。

Spring Boot 集成 Flyway

1、添加 Flyway 依賴

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

2、配置 Flyway

spring:
  flyway:
    enabled: true
    locations: classpath:db/migration
    baseline-on-migrate: true
    placeholder-replacement: false
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/my_info?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false
    username: root
    password: iuowiebd

3、創(chuàng)建數(shù)據(jù)庫遷移腳本

Flyway 使用 SQL 腳本來定義數(shù)據(jù)庫的變更。腳本需要放在 src/main/resources/db/migration 目錄下(默認(rèn)路徑),并且遵循特定的命名規(guī)則:V<版本號>__<描述>.sql

例如:V1__create_user_table.sql

CREATE TABLE user
(
    id    INT PRIMARY KEY AUTO_INCREMENT,
    name  VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL
);

insert into user (name, email)
values ('user1', 'user1@qq.com');

4、啟動應(yīng)用
啟動 Spring Boot 應(yīng)用,F(xiàn)lyway 會自動執(zhí)行 db/migration 目錄下的遷移腳本,并將執(zhí)行記錄存儲在 flyway_schema_history 表中。

控制臺關(guān)于 flyway 的日志信息:

在這里插入圖片描述

成功創(chuàng)建表:

在這里插入圖片描述

Flyway 其他用法

1、 禁用 Flyway 自動遷移

在某些場景下,可能需要手動控制 Flyway 的遷移,可以禁用自動遷移:

spring:
  flyway:
    enabled: false

bug錯(cuò)誤

Flyway版本不兼容

如果使用的 Flyway 版本與 Spring Boot 版本不兼容,可能會導(dǎo)致 Flyway 無法正常工作。

控制臺不打印任何關(guān)于 flyway 的日志。

數(shù)據(jù)庫存在表了

數(shù)據(jù)庫存在表了,就不會執(zhí)行 sql 了。

Flyway 只會執(zhí)行比當(dāng)前數(shù)據(jù)庫版本號更高的遷移腳本。如果數(shù)據(jù)庫的當(dāng)前版本是 1,而你的遷移腳本的版本號也是 1 或者更低,F(xiàn)lyway 會認(rèn)為這些腳本已經(jīng)執(zhí)行過,因此不會再次執(zhí)行。

所以只需把 sql 腳本的版本改一下,V2__create_user_table.sql(升高版本)

Flyway 的校驗(yàn)和(Checksum)不匹配

我先啟動項(xiàng)目,數(shù)據(jù)庫遷移成功,然后我改動了sql文件,就報(bào)錯(cuò):

在這里插入圖片描述

如果本地遷移腳本的內(nèi)容發(fā)生了更改(例如,修改了 SQL 腳本),F(xiàn)lyway 會檢測到校驗(yàn)和不匹配,從而拋出此錯(cuò)誤。

以上就是SpringBoot中使用Flyway進(jìn)行數(shù)據(jù)庫遷移的詳細(xì)流程的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot Flyway數(shù)據(jù)遷移的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MyBatis批量插入幾千條數(shù)據(jù)為何慎用foreach

    MyBatis批量插入幾千條數(shù)據(jù)為何慎用foreach

    這篇文章主要介紹了MyBatis批量插入幾千條數(shù)據(jù)為何慎用foreach問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • java最新版本連接mysql失敗的解決過程

    java最新版本連接mysql失敗的解決過程

    這篇文章主要給大家介紹了關(guān)于java最新版本連接mysql失敗的解決過程,文中通過圖文以及示例代碼將解決的過程介紹的非常詳細(xì),對遇到這個(gè)問題的同學(xué)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Mybatis Plus 增刪改查的實(shí)現(xiàn)(小白教程)

    Mybatis Plus 增刪改查的實(shí)現(xiàn)(小白教程)

    本文主要介紹了Mybatis Plus 增刪改查,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 淺析Java?ReentrantLock鎖的原理與使用

    淺析Java?ReentrantLock鎖的原理與使用

    這篇文章主要為大家詳細(xì)介紹了Java中ReentrantLock鎖的原理與使用,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解下
    2023-08-08
  • java如何根據(jù)提供word模板導(dǎo)出word文檔詳解

    java如何根據(jù)提供word模板導(dǎo)出word文檔詳解

    在日常的開發(fā)工作中,我們時(shí)常會遇到導(dǎo)出Word文檔報(bào)表的需求,比如公司的財(cái)務(wù)報(bào)表、醫(yī)院的患者統(tǒng)計(jì)報(bào)表、電商平臺的銷售報(bào)表等等,這篇文章主要給大家介紹了關(guān)于java如何根據(jù)提供word模板導(dǎo)出word文檔的相關(guān)資料,需要的朋友可以參考下
    2023-09-09
  • 詳解Java Slipped Conditions

    詳解Java Slipped Conditions

    這篇文章主要介紹了Java Slipped Conditions的相關(guān)資料,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2021-01-01
  • IDEA無法創(chuàng)建JDK1.8版本的Springboot項(xiàng)目問題解決(2種方法)

    IDEA無法創(chuàng)建JDK1.8版本的Springboot項(xiàng)目問題解決(2種方法)

    本文主要介紹了IDEA無法創(chuàng)建JDK1.8版本的Springboot項(xiàng)目問題解決,包含兩種解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • Java函數(shù)式編程(一):你好,Lambda表達(dá)式

    Java函數(shù)式編程(一):你好,Lambda表達(dá)式

    這篇文章主要介紹了Java函數(shù)式編程(一):你好,Lambda表達(dá)式,本文講解了新老函數(shù)式編程的一些變化,需要的朋友可以參考下
    2014-09-09
  • Java結(jié)構(gòu)型設(shè)計(jì)模式之組合模式Composite Pattern詳解

    Java結(jié)構(gòu)型設(shè)計(jì)模式之組合模式Composite Pattern詳解

    組合模式,又叫部分整體模式,它創(chuàng)建了對象組的數(shù)據(jù)結(jié)構(gòu)組合模式使得用戶對單個(gè)對象和組合對象的訪問具有一致性。本文將通過示例為大家詳細(xì)介紹一下組合模式,需要的可以參考一下
    2022-11-11
  • java實(shí)現(xiàn)KFC點(diǎn)餐小程序

    java實(shí)現(xiàn)KFC點(diǎn)餐小程序

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)KFC點(diǎn)餐系統(tǒng)小程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01

最新評論

陇西县| 包头市| 高平市| 雷州市| 南川市| 巫溪县| 年辖:市辖区| 克山县| 崇义县| 黄冈市| 晴隆县| 彭山县| 凤台县| 西乌珠穆沁旗| 高州市| 穆棱市| 贵港市| 鹤壁市| 阿坝| 宁南县| 沛县| 灵台县| 嘉鱼县| 红原县| 江川县| 敦煌市| 阿图什市| 壤塘县| 习水县| 台东县| 榕江县| 河间市| 桃园县| 徐州市| 徐水县| 高平市| 秦安县| 灵武市| 临泽县| 桐柏县| 关岭|