关于flyway的介绍就不多做介绍了,大家可以看下参考下面的文章:
flyway官方文档地址:https://documentation.red-gate.com/fd
其他相关博文地址:
https://zhuanlan.zhihu.com/p/65584224
https://zhuanlan.zhihu.com/p/358998547
https://blog.csdn.net/xyc1211/article/details/124838231
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.5.6version>
<relativePath/>
parent>
<groupId>org.examplegroupId>
<artifactId>flywayartifactId>
<version>1.0-SNAPSHOTversion>
<dependencies>
<dependency>
<groupId>org.flywaydbgroupId>
<artifactId>flyway-coreartifactId>
<version>5.2.4version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-jdbcartifactId>
dependency>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druidartifactId>
<version>1.1.24version>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
dependency>
dependencies>
<build>
<resources>
<resource>
<directory>src/main/javadirectory>
<includes>
<include>**/*.ymlinclude>
<include>**/*.propertiesinclude>
<include>**/*.xmlinclude>
includes>
<filtering>falsefiltering>
resource>
<resource>
<directory>src/main/resourcesdirectory>
<includes>
<include>**/*.*include>
includes>
<filtering>falsefiltering>
resource>
resources>
build>
project>
存在数据库storage :
server:
port: 8081
spring:
datasource:
druid:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/storage?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: root
# flyway 配置
flyway:
# 启用或禁用 flyway
enabled: true
# SQL 脚本的目录,多个路径使用逗号分隔 默认值 classpath:db/migration
locations: classpath:db/migration
在目录db/migration下编写迁移脚本文件:

其中,V3.0.10.1__init_table.sql 是创建一个数据库表 t_storage:
CREATE TABLE `t_storage` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`nameSpace` varchar(64) NOT NULL COMMENT '隔离字段',
`groupId` varchar(128) NOT NULL COMMENT '分组,比如不同app',
`dataId` varchar(64) NOT NULL COMMENT '数据存储id',
`dataValue` mediumtext DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `nameSpace` (`nameSpace`,`groupId`,`dataId`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
其中,V3.0.10.2__storage_init_data.sql 是向数据库表 t_storage 中添加数据:
INSERT INTO `t_storage`(`id`, `nameSpace`, `groupId`, `dataId`, `dataValue`) VALUES (10, '_system', 'logsetting', 'thresholdConfig', '{\"threshold\":82,\"allSize\":\"47G\",\"usedSize\":\"0\",\"remainSize\":\"47G\",\"usingRate\":0,\"diskName\":null}');
INSERT INTO `t_storage`(`id`, `nameSpace`, `groupId`, `dataId`, `dataValue`) VALUES (34, '_system', 'logsetting', 'lruConfigFilepath', '{\"dsMongo\":null,\"dsFile\":null,\"dsEs\":null}');
INSERT INTO `t_storage`(`id`, `nameSpace`, `groupId`, `dataId`, `dataValue`) VALUES (45, '_system', 'auth', 'policy', '{\"passwordPeriod\":90,\"errorTimes\":5,\"lockTime\":5,\"minLength\":8}');

查看数据库 storage,可以看到数据库中新建了一张t_storage表,并向里面插入了3条数据:

