数据库版本管理工具-flyway

909492228223898008.jpg

写在前面

在日常开发中,经常遇到数据库变更,字段增减调整,需要维护多个不同数据库时是十分痛苦的事情.代码可以使用svn,git等工具进行管理,那么数据库的版本可以使用Flyway 一款小工具,就可以大大简化这方面的工作。官方网站

介绍

flyway支持大部分主流的数据库,Oracle,SQL Server MySQL等;
并且拥有命令行工具,Maven,Gradle插件等;
配置简单,实用方便,支持Sql及java配置,这里写一个简单的java配置。

需要明白的几个概念:

  • 版本:对数据库的每一次变更可称为一个版本。
  • 迁移:Flyway把数据库结构从一个版本更新到另一个版本叫做迁移。
  • 可用的迁移:Flyway的文件系统识别出来的迁移版本。
  • 已经应用的迁移:Flyway已经对数据库执行过的迁移。

使用

  • 需要使用Flyway核心jar包;可直接下载flyway-core-3.2.1.jar
  • 在项目中创建文件夹 src/dbmigration, 默认src/db/migration,可以在配置中进行修改。
  • 对Flyway进行数据库配置,这里使用spring配置文件配置,也可以使用java对象进行配置,
<bean id="flyway" class="org.flywaydb.core.Flyway" init-method=”migrate”>
  <property name=”dataSource” ref=”dataSource” /> <!--数据源-->
  <property name=”locations” value=”dbmigration”/> <!--脚本文件夹地址 默认src/db/migration-->
  <property name=”validateOnMigrate” value=”false”/> <!--迁移验证 默认true-->
  <property name=”baselineOnMigrate” value=”true”/> <!--基线迁移 默认false-->
  <property name=”placeholderPrefix” value=”ignore”/> <!--占位符前缀-->
  <property name=”outOfOrder” value=”false”/> 
</bean>

<bean id=”sqlSessionFactory” class=”org.mybatis.spring.SqlSessionFactoryBean” depends-on=”flyway”> <!--建立前置依赖-->
  <property name=”configLocation” value=”classpath:/conf/configuration.xml”/> 
  <property name=”dataSource” ref=”dataSource” /> <!--数据源-->
</bean>

然后,就完成了简单配置了,在dbmigration文件夹下创建sql文件,比如:V1_0_1__初始化.sql,V1_0_2__修改表.sql等,其中sql脚本文件需要按照一定的规则来命名,能够让flyway检测并执行。

命名规则也能进行定义比如prefix、separator、suffix,默认prefix是V(执行一遍,并且版本号唯一,如果有重复就会报错)或R(重复执行,不需要版本号),separator是双下划线__,suffix是.sql。V开头+版本号+双下划线+描述。

新版本更改脚本,版本数字大于之前的版本就可以了。

注意

在启动tomcat启动后 加载配置文件运行flyway组件 对数据库版本更新,它在维护更新时会在数据库中新建表 schame_version 用来对sql脚本版本升级进行维护,一份sql文件对应一条数据,所以对数据库版本升级时,会根据该表查询进行操作,如果没有记录,则会执行该sql文件,如果存在数据则不执行,在对当前数据库中sql脚本只会执行一次,

如果出现异常例如:org.flywaydb.core.api.FlywayException: Schema “xxx” contains a failed migration to version 1.1.043 !则表示数据库冲突,需要把表 schame_version 相应记录删除,并且保证sql脚本操作不会与该数据库冲突。每次版本更新 schame_version 都会保存运行的结果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值