Flyway-数据库版本管理工具

在之前的公司用过flyway,但是只知道flyway clean migrate命令,但是没有真正的自己搭建过。今天搭建了一下,真心觉得flyway真的是简单美好*_*

官网:https://flywaydb.org/

特点如下:

(1)操作简单,只要配置好数据库链接、用户名、密码,即可执行数据库脚本。

(2)数据库脚本sql文件命名方式简单唯一:V版本号__描述.sql,其中,版本号的标志为前面一个大写的V,版本号后面接两个下划线。“描述”中可以用多个单个下划线表示,必须以sql结尾。比如:

         V1.2.20200918140000__init_t_user_by_zxy.sql(这个命名规范只有这一种,所以大家不要像我一样不撞南墙不回头,花了半天时间发现只有这种格式能用

(3)Flyway版本管理是依赖于它在数据库执行的schema的,用于记录已执行的版本和执行的状态,默认表为flyway_schema_history。比如,已经在数据库执行过V1.1__description.sql这个脚本,且成功,那么下次执行的时候略过这个sql脚本,依次执行比当前版本高的其他版本sql,如:V1.2__description.sql。

flyway_schema_history的结构如图:

(4)执行过程中发生错误,会终止当前程序,flyway_schema_history的历史版本也会只更新到发生错误的sql文件的版本,后面的版本不会被执行。

(5)可以实现多人共同对数据库进行版本管理

实现原理: https://flywaydb.org/getstarted/how,有两三年码龄的人,谷歌翻译成中文应该都能看懂,这里就不说了。

Flyway命令:

(1)Migrate: 将Schema Migrate到最新版本

(2)Clean:清空数据库里面的数据以及数据表,慎用

(3)Info命令:打印所有migration的详细信息和状态信息

(4)Validata命令:检查已经运行的migration是否已变更。

(5)Baseline:如果当前数据库中不存在flyway_schema_history,则会创建flyway_schema_history表来记录版本

(6)Repair:删除flyway_schema_history失败的执行记录

============================实践是检验真理的唯一标准===========================

我研究了两种flyway执行sql脚本的方式,

第一种是直接下载flyway的jar包,上传对应的sql,控制台执行flyway migrate命令执行数据库脚本;

第二种是将flyway配置在maven中;

先介绍第一种:jar包实现数据库版本管理

首先,下载flyway的压缩包,结构如图

(1)将sql的脚本放在sql文件夹里面,文件命名按照V版本号__描述.sql的方式命名;版本号不能相同,否则报错

(2)在conf文件夹里面配置用户名密码以及链接、驱动等:

(3)这个配置完成之后,配置环境变量,将flyway的路径“C:\work\app\flyway-5.0.7”配置到path里面。Win+R打开控制台,输入 flyway migrate,执行sql文件里面的文件。完成数据库脚本执行。

第二种:maven配置flyway相关

  1. 引入maven依赖和插件
<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
    <version>5.0.7</version>
</dependency>
==========================================
<plugin>
	<groupId>org.flywaydb</groupId>
	<artifactId>flyway-maven-plugin</artifactId>
	<!-- <version>5.0.7</version>-->
	<configuration>
		<user>root</user>
		<password>root</password>
		<driver>com.mysql.jdbc.Driver</driver>
		<url>jdbc:mysql://localhost:3306/test?useSSL=false&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;serverTimezone=UTC</url>
		<!--禁止清库-->
		<cleanDisabled>false</cleanDisabled>
		<!--是否在基线上执行sql脚本-->
		<baselineOnMigrate>true</baselineOnMigrate>
		<!--基线的版本,新加的sql的版本命名必须大于这个版本才能执行,之前的版本可以小于等于当前版本,flyway就不会扫描执行-->
		<baselineVersion>1_202010101448</baselineVersion>
	</configuration>
</plugin>
  1. 在main/resources下建立文件夹,/db/migration,并将对应的sql放入当前文件夹内,sql文件命名要符合flyway命名规则

      2.在控制台执行脚本:mvn flyway:migrate:

实践完毕 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值