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

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

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

概要

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

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ù)庫(kù)遷移腳本

Flyway 使用 SQL 腳本來(lái)定義數(shù)據(jù)庫(kù)的變更。腳本需要放在 src/main/resources/db/migration 目錄下(默認(rèn)路徑),并且遵循特定的命名規(guī)則:V<版本號(hào)>__<描述>.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、啟動(dòng)應(yīng)用
啟動(dòng) Spring Boot 應(yīng)用,F(xiàn)lyway 會(huì)自動(dòng)執(zhí)行 db/migration 目錄下的遷移腳本,并將執(zhí)行記錄存儲(chǔ)在 flyway_schema_history 表中。

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

在這里插入圖片描述

成功創(chuàng)建表:

在這里插入圖片描述

Flyway 其他用法

1、 禁用 Flyway 自動(dòng)遷移

在某些場(chǎng)景下,可能需要手動(dòng)控制 Flyway 的遷移,可以禁用自動(dòng)遷移:

spring:
  flyway:
    enabled: false

bug錯(cuò)誤

Flyway版本不兼容

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

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

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

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

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

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

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

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

在這里插入圖片描述

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

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

相關(guān)文章

  • JAVA 自定義線程池的最大線程數(shù)設(shè)置方法

    JAVA 自定義線程池的最大線程數(shù)設(shè)置方法

    這篇文章主要介紹了JAVA 自定義線程池的最大線程數(shù)設(shè)置方法,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • springboot3.X版本集成mybatis遇到的問(wèn)題及解決

    springboot3.X版本集成mybatis遇到的問(wèn)題及解決

    在將SpringBoot3.X版本與MyBatis集成時(shí),直接參考基于SpringBoot2.X的配置方法會(huì)導(dǎo)致各種報(bào)錯(cuò),尤其是無(wú)法注入mapper的bean問(wèn)題,這主要是因?yàn)镾pringBoot3.X版本需要搭配MyBatis3.0.3及以上版本才能正常工作,通過(guò)更新maven配置至MyBatis3.0.3版本,可以解決這一問(wèn)題
    2024-09-09
  • Kotlin基礎(chǔ)教程之控制流(順序,分支,循環(huán))

    Kotlin基礎(chǔ)教程之控制流(順序,分支,循環(huán))

    這篇文章主要介紹了Kotlin基礎(chǔ)教程之控制流的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • 在SpringBoot項(xiàng)目中如何實(shí)現(xiàn)線程池的動(dòng)態(tài)監(jiān)控

    在SpringBoot項(xiàng)目中如何實(shí)現(xiàn)線程池的動(dòng)態(tài)監(jiān)控

    Spring Boot因其簡(jiǎn)便、高效的特點(diǎn)廣受開(kāi)發(fā)者喜愛(ài),在復(fù)雜的業(yè)務(wù)場(chǎng)景下,如何確保Spring Boot應(yīng)用的高性能和穩(wěn)定性成為了一個(gè)關(guān)鍵問(wèn)題,其中,線程池的管理策略直接影響到系統(tǒng)的吞吐量和資源利用效率,本文將重點(diǎn)探討在Spring Boot項(xiàng)目中,如何實(shí)現(xiàn)線程池的動(dòng)態(tài)監(jiān)控
    2023-10-10
  • Java getParameter方法案例詳解

    Java getParameter方法案例詳解

    這篇文章主要介紹了Java getParameter方法案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Spring boot項(xiàng)目使用thymeleaf模板過(guò)程詳解

    Spring boot項(xiàng)目使用thymeleaf模板過(guò)程詳解

    這篇文章主要介紹了Spring boot項(xiàng)目使用thymeleaf模板過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Java parseInt解釋加方法示例

    Java parseInt解釋加方法示例

    使用此方法得到的原始數(shù)據(jù)類型的一個(gè)特定的字符串。 parseXxx()是一個(gè)靜態(tài)方法,可以有一個(gè)參數(shù)或兩個(gè)
    2013-11-11
  • Java封裝實(shí)現(xiàn)自適應(yīng)的單位轉(zhuǎn)換工具類

    Java封裝實(shí)現(xiàn)自適應(yīng)的單位轉(zhuǎn)換工具類

    這篇文章主要為大家詳細(xì)介紹了如何使用Java封裝實(shí)現(xiàn)一個(gè)自適應(yīng)的單位轉(zhuǎn)換工具類,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-03-03
  • 深入了解Spring控制反轉(zhuǎn)IOC原理

    深入了解Spring控制反轉(zhuǎn)IOC原理

    IOC-Inversion?of?Control,即控制反轉(zhuǎn)。它不是什么技術(shù),而是一種設(shè)計(jì)思想。這篇文章將為大家介紹一下Spring控制反轉(zhuǎn)IOC的原理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Seata?AT模式啟動(dòng)過(guò)程圖文示例詳解

    Seata?AT模式啟動(dòng)過(guò)程圖文示例詳解

    這篇文章主要為大家介紹了Seata?AT模式啟動(dòng)過(guò)程圖文示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09

最新評(píng)論