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内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 浅谈SpringBoot之开启数据库迁移的FlyWay使用

    本文介绍了SpringBoot开启数据库迁移的FlyWay使用,分享给大家,具体如下: 一,首先我先了解下FlyWay是如何运转的. 最简单的方案是将Flyway指向一个空数据库. 它将尝试找到其元数据表.当数据库为空时,Flyway将不会找到它, 而是创建它.您现在拥有一个名为SCHEMA_VERSION的单个空表的数据库 : 该表将用于跟踪数据库的状态.之后,Flyway将开始扫描应用程序的文件系统或类路径进行迁移.它们可以用Sql或Java编写. 然后根据其版本号对迁移进行排序,并按顺序应

  • 详解Spring Boot中使用Flyway来管理数据库版本

    如果没有读过上面内容的读者,有兴趣的可以一阅.在上面的使用JdbcTemplate一文中,主要通过spring提供的JdbcTemplate实现对用户表的增删改查操作.在实现这个例子的时候,我们事先在MySQL中创建了用户表.创建表的过程我们在实际开发系统的时候会经常使用,但是一直有一个问题存在,由于一个系统的程序版本通过git得到了很好的版本控制,而数据库结构并没有,即使我们通过Git进行了语句的版本化,那么在各个环境的数据库中如何做好版本管理呢?下面我们就通过本文来学习一下在Spring B

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

    Flyway是什么 Flyway是一款开源的数据库版本管理工具,Flyway可以独立于应用实现管理并跟踪数据库的变更,Flyway根据自己的约定,不需要复杂的配置就可以实现数据的Migrate.Migrations可以写成SQL脚本,也可以写在Java代码中,Flyway还支持Spring Boot. 简介 在团队开发当中,有可能每个人都是使用自己本地的数据库.当数据库的表或者字段更新时,往往需要告知团队的其他同事进行更新. Flyway数据库版本迁移工具,目的就是解决该问题而诞生的(我自己想的

  • SpringBoot整合flyway实现自动创建表的方法

    spring boot - v: 2.1.3.RELEASE MySQL - v:5.7 JDK -v : 11 项目结构: pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan

  • SpringBoot整合spring-data-jpa的方法

    jpa是JavaEE定义的一种规范,常用的实现一般是Hibernate,而spring-data-jpa则是对jpa的又一层封装,提供了更多便捷的方法. 这里不会深入讲解spring-data-jpa的使用,只是讲解怎么快速的整合使用,目的是帮助那些想学,但是在整合上老是翻车的同学 导入依赖 <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> &

  • SpringBoot整合Shiro的方法详解

    目录 1.Shito简介 1.1 什么是shiro 1.2 有哪些功能 2.QuickStart 3.SpringBoot中集成 1.导入shiro相关依赖 2.自定义UserRealm 3.定义shiroConfig 4.新建页面进行测试 1.Shito简介 1.1 什么是shiro Apache Shiro是一个java安全(权限)框架 Shiro可以非常容易的开发出足够好的应用,其不仅可以用在javase环境,也可以用在javaee环境 shiro可以完成,认证,授权,加密,会话管理,we

  • SpringBoot整合RocketMQ的方法详解

    目录 一:Ubuntu安装RocketMQ 二:添加RocketMQ依赖 三:在application中添加RocketMQ配置 四:编写消费者,消息生产者,消息实体类(自定义) 五:测试Controller 一:Ubuntu安装RocketMQ 1.下载(在下面地址选择自己需要的版本的rocketmq) http://rocketmq.apache.org/release_notes/ 2.解压,更改配置 将下载的zip文件解压到自己需要安装的位置 在unbuntu系统下需要修改安装跟目录下的

  • SpringBoot整合tkMapper的方法

    SpringBoot整合tkMapper 项目使用SpringBoot2.0,H2数据库,使用了 Lombok 简化代码:本人是刚入门的菜鸟,下面是本人使用SpringBoot整合tkMapper的一个小demo,记录下来本人在此处踩得坑,有需要修正的地方欢迎各路大神.大佬指导,小弟谦虚受教. 1 搭建一个SpringBoot的项目,怎么搭建网上教程一大堆,这里就不描述了直接进入正题,首先先看一下整体的项目结构 2 pom文件引入依赖(注意依赖冲突) <dependencies> <de

  • SpringBoot整合Thymeleaf的方法

    简介: 在目前的企业级应用开发中 前后端分离是趋势,但是视图层技术还占有一席之地, Spring Boot 对视图层技术提供了很好的支持,官方推荐使用的模板引擎是 Thymeleaf 不过像 FreeMarker 也支持, JSP 技术在这里并不推荐使用. Thymeleaf 是新一代 Java 模板引擎,类似于 Velocity.FreeMarker 等传统 Java 模板引擎.与传统 Java 模板引擎不同的是 Thymeleaf 支持 HTML 原型,既可 以让前端工程师在浏览器中直接打

  • springBoot整合rabbitMQ的方法详解

    引入pom <?xml version="1.0" encoding="UTF-8"?> <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

  • SpringBoot整合mybatis-generator-maven-plugin的方法

    前言: SpringBoot版本 : 2.2.6 mybatis-generator-maven-plugin版本: 1.4.0 plugin 使用 mysql版本: 5.1.47 本次主要记录日和使用该插件自动生成pojo mapper xml文件(单表) 1 创建SpringBoot工程 这里不做具体记录,创建工程往常教程很多, 下面贴出重要文件和注意事项 1.1 pom.xml <?xml version="1.0" encoding="UTF-8"?&

随机推荐