SpringBoot整合Flyway的方法(数据库版本迁移工具)

 更新时间:2020年06月04日 11:07:03   作者:返回主页Johnson木木  
这篇文章主要介绍了SpringBoot整合Flyway的方法(数据库版本迁移工具),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

Flyway是什么

Flyway是一款开源的数据库版本管理工具,Flyway可以独立于应用实现管理并跟踪数据库的变更,Flyway根据自己的约定,不需要复杂的配置就可以实现数据的Migrate。Migrations可以写成SQL脚本,也可以写在Java代码中,Flyway还支持Spring Boot。

简介

在团队开发当中,有可能每个人都是使用自己本地的数据库。当数据库的表或者字段更新时,往往需要告知团队的其他同事进行更新。
Flyway数据库版本迁移工具,目的就是解决该问题而诞生的(我自己想的)。每当我们更新数据库的时候,只需要添加SQL文件到指定目录中。Flyway会在数据库创建一个表,专门记录已更新的SQL文件。当我们下次执行时则不会执行已记录并且执行成功的SQL文件。

整合

maven

现在的Flyway的最新版本已经到了6.4.2。我用的是6.3.3

<!-- https://mvnrepository.com/artifact/org.flywaydb/flyway-core -->
<dependency>
  <groupId>org.flywaydb</groupId>
  <artifactId>flyway-core</artifactId>
  <version>6.3.3</version>
</dependency>

application配置

搞定了Flyway的依赖后,修改一下SpringBoot的application.ymlapplication.xml配置。

spring:
 flyway:
  url: jdbc:mysql://192.168.138.132:3306/hotel-server?useUnicode=true&characterEncoding=UTF-8 
  user: johnson 
  password: 123456 
  table: flyway_schema_history
  enabled: true
  locations: classpath:db/migration
  clean-disabled: false

flyway配置详解

url:连接数据库的Url 默认为spring.datasource.url

user:连接数据库的账号 默认为spring.datasource.username

password:连接数据库的密码 默认为spring.datasource.password

table:自定义数据库版本管理表 默认为 flyway_schema_history

enabled:是否开启 默认为开启

locations:SQL文件存放路径 默认 classpath:db/migration

SQL文件

上面的locations参数配置的SQL文件存放路径为 classpath:db/migrationclasspath对应的目录就是resources目录,创建后的目录如下图:

SQL文件如上图,SQL文件名必须为V1.0.x__xxx.sql(注意:这里的下划线为两个_,我也是掉坑了才知道),这样可以对应SQL更新的版本号。启动了SpringBoot项目后,就会自动帮你执行SQL文件,可以看到数据库版本控制表中生成的数据:

clean操作

Flyway的clean操作:彻底清除已配置的架构,它将有效地为您提供一个全新的起点。所有对象(表,视图,过程等)都将被删除。

spring:
 flyway:
  clean-on-validation-error: true
  clean-disabled: false

clean-on-validation-error:发生验证的错误时是否执行clean操作(如SQL执行失败),默认false,生产中必须使用false。
clean-disabled:是否禁用clean操作,默认false,生产中必须使用true

如果我们设置 clean-on-validation-error = trueclean-disabled = false
当我们的SQL文件执行失败,在数据库版本控制表flyway_schema_history会添加一条失败的记录,success字段为0,此时并不会执行clean操作。
当把SQL文件修改正确并执行完后,此时flyway_schema_history会把失败记录的success字段由0改为1。并且会执行clean操作!!!!!整个数据库的表里面的数据都被清空了!(除非你在SQL文件中添加了insert操作)
其实在开发环境我也是不建议使用clean,毕竟填数据也是要时间的。。。

总结

团队开发当中的必备工具啊!不过生产环境当中记得把clean-disabled改为true

到此这篇关于SpringBoot整合Flyway的方法(数据库版本迁移工具)的文章就介绍到这了,更多相关SpringBoot整合Flyway内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mybatis配置文件之动态SQL配置备忘录

    Mybatis配置文件之动态SQL配置备忘录

    这篇文章主要介绍了Mybatis配置文件之动态SQL配置备忘录的相关资料,需要的朋友可以参考下
    2017-05-05
  • Spring使用AOP完成统一结果封装实例demo

    Spring使用AOP完成统一结果封装实例demo

    这篇文章主要介绍了Spring使用AOP完成统一结果封装,本文通过实现demo给大家详细讲解,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • Windows系统下Java连接SQL Server的方法简介

    Windows系统下Java连接SQL Server的方法简介

    这篇文章主要介绍了Windows系统下Java连接SQL Server的方法,分别是JDBC和JTDS的相关使用,需要的朋友可以参考下
    2015-09-09
  • UniApp + SpringBoot 实现支付宝支付和退款功能

    UniApp + SpringBoot 实现支付宝支付和退款功能

    这篇文章主要介绍了UniApp + SpringBoot 实现支付宝支付和退款功能,基本的 SpringBoot 的脚手架,可以去IDEA 自带的快速生成脚手架插件,本文通过实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2022-06-06
  • Java中@valid和@Validated注解的使用详解

    Java中@valid和@Validated注解的使用详解

    这篇文章主要介绍了Java中@valid和@Validated注解的使用详解,@Validated可以用在类型、方法和方法参数上,但是不能用在成员属性(字段)上,不支持嵌套检测,@Valid可以用在方法、构造函数、方法参数和成员属性(字段)上,支持嵌套检测,需要的朋友可以参考下
    2024-01-01
  • 深入学习Spring Boot排查 @Transactional 引起的 NullPointerException问题

    深入学习Spring Boot排查 @Transactional 引起的 NullPointerException问题

    这篇文章主要介绍了深入学习Spring Boot排查 @Transactional 引起的 NullPointerException问题,需要的朋友可以参考下
    2018-01-01
  • Java语言实现反转链表代码示例

    Java语言实现反转链表代码示例

    这篇文章主要介绍了Java语言实现反转链表代码示例,小编觉得挺不错的,这里分享给大家,供需要的朋友参考。
    2017-10-10
  • spring如何实现依赖注入DI(spring-test方式)

    spring如何实现依赖注入DI(spring-test方式)

    本文主要介绍如何实现spring 的依赖注入,并且浅显的讲述一下注入需要注意的事项。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • java实战项目之记账软件

    java实战项目之记账软件

    这篇文章主要介绍了java实战项目之记账软件,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • Java基础教程之封装与接口

    Java基础教程之封装与接口

    这篇文章主要介绍了Java基础教程之封装与接口,本文用浅显易懂的语言讲解了Java中的封装与接口,很形象的说明了这两个面向对象术语,需要的朋友可以参考下
    2014-08-08

最新评论