回顾数据库版本控制工具Flyway

一 概述

FlyWay是独立于数据的应用,管理并跟踪数据库变更的数据库版本管理工具。用通俗的话讲,FlyWay可以像Git管理不同的人的代码那样,管理不同人的SQL脚本,从而做到数据库同步。

关于FlyWay

二 FlyWay使用好处与所需依赖

在我们的日常开发中,存在多人开发的时候,此时我们会借助Git来实现对代码进行版本控制,这样可以很好的解决多人开发代码冲突和版本回退的问题。

其实在多人协同开发过程中,对数据库的变更也是需要版本控制的,这样可以避免一下问题:

  1. 自己在开发过程中忘记将SQL在需要的地方执行。
  2. 无法判断团队其他人写的SQL是否全部执行。
  3. 当其他人修改了已经执行过的SQL,期望再次执行。
  4. 对新增的环境进行数据迁移。
  5. 每次进行应用的版本迭代时,需要先手动控制保证DB版本更新,最后再发布应用版本。

FlyWay所需的依赖

        <dependency>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-core</artifactId>
            <version>5.2.4</version>
        </dependency>

三 FlyWay的使用

新建一个空的数据库(DataBase)或者Schema

在SpringBoot项目中的配置文件application.yml中进行数据库配置

spring:
#  main:
#    allow-bean-definition-overriding: true
  datasource: #数据库配置
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/family?allowMultiQueries=true&serverTimezone=GMT%2B8&characterEncoding=utf8
    username: root
    password: ********

    #hikari数据库连接池
    hikari:
      pool-name: Retail_HikariCP
      minimum-idle: 5 #最小空闲连接数量
      idle-timeout: 180000 #空闲连接存活最大时间,默认600000(10分钟)
      maximum-pool-size: 10 #连接池最大连接数,默认是10
      auto-commit: true  #此属性控制从池返回的连接的默认自动提交行为,默认值:true
      max-lifetime: 1800000 #此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟
      connection-timeout: 30000 #数据库连接超时时间,默认30秒,即30000
      connection-test-query: SELECT 1

在项目的src/main/resources目录下新建db.migration文件夹

默认情况下,该目录下的.sql文件就是需要被flyway做版本控制的数据库SQL语句。

四 Flyway对应的SQL命名规则

  1. 仅需要被执行一次的SQL命名以大写的"V"开头,后面跟上"0~9"数字的组合,数字之间可以用“.”或者下划线"_"分割开,然后再以两个下划线分割,其后跟文件名称,最后以.sql结尾。比如,V2.1.6__create_user_ddl.sqlV2.1.8__add_user_dml.sql
  2. 可重复运行的SQL,则以大写的“R”开头,后面再以两个下划线分割,其后跟文件名称,最后以.sql结尾。。比如,R__alter_user_dml.sql

其中,V开头的SQL执行优先级要比R开头的SQL优先级高。

FlyWay相关的参考资料

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值