導入flyway的maven座標以及插件
<!--flyway 數據庫版本管理工具依賴-->
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>5.2.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
這裏注意版本,springBoot整合使用5.0以上的,flyway使用jdbc連接數據庫
<plugin>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<version>4.0.3</version>
</plugin>
然後在根目錄下簡歷文件夾db/migration
這是flyway默認讀取sql腳本的文件夾地址,如果要改名字,需要另行配置
文件夾中的sql文件名字有一定規則,隨意取名會出錯,詳細規則如下
- prefix: default: V (大寫哦)
- version: 版本號,也可以使用大小版本組合的方式,小版本號用單_區分
- separator: 分隔符,雙下劃線__
- description: 描述(你懂得,必須要有意義)
- suffix: 後綴 default: .sql
腳本文件中的內容
創建配置類,用於初始化flyway
package com.guoheng.hazard.config;
import org.flywaydb.core.Flyway;
import org.flywaydb.core.api.configuration.FluentConfiguration;
import org.springframework.boot.autoconfigure.flyway.FlywayMigrationStrategy;
import org.springframework.stereotype.Component;
/**
* 類功能描述: 數據庫初始化flyway
*
* @author fbl
* @date 2019-12-13 15:50
*/
@Component
public class BaselineOnMigrateMigrationStrategy implements FlywayMigrationStrategy {
@Override
public void migrate(Flyway flyway) {
FluentConfiguration configure = Flyway.configure();
configure.baselineOnMigrate(true);
flyway.migrate();
}
}
當應用程序運行時,數據庫會創建一個‘flyway_schema_history’表,表中記錄着數據庫版本號和描述信息
每當你創建一個新的sql腳本時,運行應用程序,會運行相應的sql腳本,升級你的數據庫,並在表中生產相應記錄,如果刪除記錄,再次啓動程序時會又一次執行相應的sql腳本。
如果sql腳本已被執行,在修改相對應的sql,再次啓動程序會報錯