Flyway使用入門

Flyway使用入門

Flyway簡介

Flyway 是一款開源的數據庫版本管理工具。它能夠很方便的在命令行中使用,或者在Java應用程序中引入,用於管理咱們的數據庫版本。mysql

在項目或產品中,很難一開始就把業務理清楚,把數據庫表設計好,所以數據表也會在迭代週期不斷迭代。在Java應用程序中使用Flyway,能快速有效地用於迭代數據庫表結構,並保證部署到測試環境或生產環境時,數據表都是保持一致的。git

Flyway支持的數據庫不少,從官網摘抄以下:github

Supported databases are Oracle, SQL Server (including Amazon RDS and Azure SQL Database), Azure Synapse (Formerly Data Warehouse), DB2, MySQL (including Amazon RDS, Azure Database & Google Cloud SQL), Aurora MySQL, MariaDB, Percona XtraDB Cluster, TestContainers, PostgreSQL (including Amazon RDS, Azure Database, Google Cloud SQL & Heroku), Aurora PostgreSQL, Redshift, CockroachDB, SAP HANA, Sybase ASE, Informix, H2, HSQLDB, Derby, Snowflake, SQLite and Firebird.

更多的特性,可直接在官網上查詢,這裏再也不一一羅列。spring

Flyway是如何工做的

Flyway工做流程以下:sql

一、項目啓動,應用程序完成數據庫鏈接池的創建後,Flyway自動運行。數據庫

二、初次使用時,Flyway會建立一個flyway_schema_history表,用於記錄sql執行記錄。springboot

三、Flyway會掃描項目指定路徑下(默認是classpath:db/migration)的全部sql腳本,與flyway_schema_history表腳本記錄進行比對。若是數據庫記錄執行過的腳本記錄,與項目中的sql腳本不一致,Flyway會報錯並中止項目執行。ide

四、若是校驗經過,則根據表中的sql記錄最大版本號,忽略全部版本號不大於該版本的腳本。再按照版本號從小到大,逐個執行其他腳本。工具

在SpringBoot項目使用Flyway

如下演示如何在SpringBoot項目中使用Flyway,代碼保存個人Github倉庫測試

一、初始化一個SpringBoot項目,引入MySQL數據庫驅動依賴等,而且須要引入Flyway依賴:

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

二、添加Flyway配置:

spring:  # 數據庫鏈接配置  datasource:    driver-class-name: com.mysql.cj.jdbc.Driver    url: jdbc:mysql://localhost:3306/ssm-demo?characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8    username: xxx    password: xxx  flyway:    # 是否啓用flyway    enabled: true    # 編碼格式,默認UTF-8    encoding: UTF-8    # 遷移sql腳本文件存放路徑,默認db/migration    locations: classpath:db/migration    # 遷移sql腳本文件名稱的前綴,默認V    sql-migration-prefix: V    # 遷移sql腳本文件名稱的分隔符,默認2個下劃線__    sql-migration-separator: __    # 遷移sql腳本文件名稱的後綴    sql-migration-suffixes: .sql    # 遷移時是否進行校驗,默認true    validate-on-migrate: true    # 當遷移發現數據庫非空且存在沒有元數據的表時,自動執行基準遷移,新建schema_version表    baseline-on-migrate: true

三、根據在配置文件的腳本存放路徑的配置,在resource目錄下創建文件夾db/migration

四、添加須要運行的sql腳本。sql腳本的命名規範爲:V+版本號(版本號的數字間以」.「或」_「分隔開)+雙下劃線(用來分隔版本號和描述)+文件描述+後綴名,例如:V20201100__create_user.sql。如圖所示:

d7e237d444f384e1990a61a3d06d639d.jpg

五、啓動項目。啓動成功後,在數據庫中能夠看到已按照定義好的腳本,完成數據庫變動,並在flyway_schema_history表插入了sql執行記錄:

55e6801b75a80e9de3b1ecaae4a4fb3f.png建立成功的表1d57650f93214cc959818bcd79cfc2bb.pngsql執行記錄

相關文章
相關標籤/搜索