在之前的公司用过flyway,但是只知道flyway clean migrate命令,但是没有真正的自己搭建过。今天搭建了一下,真心觉得flyway真的是简单美好*_*
特点如下:
(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相关
- 引入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&useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC</url>
<!--禁止清库-->
<cleanDisabled>false</cleanDisabled>
<!--是否在基线上执行sql脚本-->
<baselineOnMigrate>true</baselineOnMigrate>
<!--基线的版本,新加的sql的版本命名必须大于这个版本才能执行,之前的版本可以小于等于当前版本,flyway就不会扫描执行-->
<baselineVersion>1_202010101448</baselineVersion>
</configuration>
</plugin>
- 在main/resources下建立文件夹,/db/migration,并将对应的sql放入当前文件夹内,sql文件命名要符合flyway命名规则
2.在控制台执行脚本:mvn flyway:migrate:
实践完毕
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/158162.html