SpringBoot整合flyway实现数据库版本管理

导入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,再次启动程序会报错

有时候使用过滤器拦截器之类的可能造成无法自动建立表,需要手动建立:

CREATE TABLE `flyway_schema_history` (
  `installed_rank` int(11) NOT NULL,
  `version` varchar(50) DEFAULT NULL,
  `description` varchar(200) NOT NULL,
  `type` varchar(20) NOT NULL,
  `script` varchar(1000) NOT NULL,
  `checksum` int(11) DEFAULT NULL,
  `installed_by` varchar(100) NOT NULL,
  `installed_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `execution_time` int(11) NOT NULL,
  `success` tinyint(1) NOT NULL,
  PRIMARY KEY (`installed_rank`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值