java 自动升级sql脚本 flyway 工具

本文介绍了数据库管理工具Flyway的用途,如解决SQL脚本执行同步问题和数据迁移。Flyway在项目启动时自动执行新版本SQL脚本,确保数据库与代码同步。文中详细阐述了Flyway的工作流程、项目中使用Flyway的步骤以及命名规范,并列举了常见问题及解决方案。
摘要由CSDN通过智能技术生成

为什么要用Flyway

在日常开发中,我们经常会遇到下面的问题:

  1. 自己写的SQL忘了在所有环境执行;

  2. 别人写的SQL我们不能确定是否都在所有环境执行过了;

  3. 有人修改了已经执行过的SQL,期望再次执行;

  4. 需要新增环境做数据迁移;

  5. 每次发版需要手动控制先发DB版本,再发布应用版本;

  6. 其它场景...

由于项目需求的变化,或者前期设计缺陷,导致在后期需要修改数据库,这应该是一个比较常见的事情,如果项目还没上线,你可能把表删除了重新创建,但是如果项目已经上线了,就不能这样简单粗暴了,每次运维部署项目,还得手动执行一遍SQL文件。我们需要通过 SQL 脚本在已有数据表的基础上进行升级。

有了flyway,这些问题都能得到很好的解决。

使用了 Flyway 之后,如果再想进行数据库版本升级,就不用该以前的数据库脚本了,直接创建新的数据库脚本,项目在启动时检测了有新的更高版本的脚本,就会自动执行,这样,在和其他同事配合工作时,也会方便很多。因为正常我们都是从 Git 上拉代码下来,不拉数据库脚本,这样要是有人更新了数据库,其他同事不一定能够收到最新的通知,使用了 Flyway 就可以有效避免这个问题了。

所有的脚本,一旦执行了,就会在 flyway_schema_history (java www.fhadmin.cn ) 表中有记录,如果你不小心搞错了,可以手动从 flyway_schema_history 表中删除记录,然后修改 SQL 脚本后再重新启动(生产环境不建议)。

Flyway是如何工作的

Flyway工作流程如下:

1、项目启动,应用程序完成数据库连接池的建立后,Flyway自动运行。

2、初次使用时,Flyway会创建一个flyway_schema_history表,用于记录sql执行记录。

3、Flyway会扫描项目指定路径下(默认是classpath:db/migration)的所有sql脚本,与flyway_schema_history表脚本记录进行比对。如果数据库记录执行过的脚本记录,与项目中的sql脚本不一致,Flyway会报错并停止项目执行。

4、如果校验通过,则根据表中的sql记录最大版本号,忽略所有版本号不大于该版本的脚本。再按照版本号从小到大,逐个执行其余脚本。

项目中使用Flyway

首先,在pom文件中引入flyway的核心依赖包:

1、引入核心依赖包:

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

这里使用5.2.4版本。经测试7.0.0版本与目前我们使用的sprin

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值