Java使用flyway实现脚本自动化的方法详解

 更新时间:2023年10月27日 09:40:39   作者:生命猿于运动  
Flyway是一个开源的数据库版本控制工具,主要用于管理数据库的版本和变更,它可以自动化地将数据库迁移到不同的版本,同时支持多种数据库类型,本文给大家介绍了如何使用flyway实现脚本自动化,需要的朋友可以参考下

如何使用

使用Flyway,仅需将编写的好SQL语句写成sql脚本文件,根据版本规定填写正确的文件名,存放到指定的目录底下,在项目进行启动时即可自动扫描指定目录底下的脚本,根据数据库Flyway配置表进行对比,将未执行的脚本按顺序自动执行。

Flyway脚本迁移文件命名需要遵循以下规则:

如上图,文件命名规范主要分为以下几个部分:

  • 前缀:V表示版本化迁移,U表示撤销迁移,R表示可重复迁移。
  • 下划线:在版本号中下划线会被.替换。
  • 分隔符:两个下划线,用来分隔版本号与文件描述词
  • 描述:脚本文件内容的简短描述,执行后内容中的下划线则会被替换为空格。

文件名版本号与文件描述内容以两个下划线分隔开,命名示例:

  • V1_20231026154401__create_student_table.sql
  • V1_20231026162233__insert_student_data.sql

通常情况下我们都是直接以V前缀进行命名,在需要进行回退操作时,直接在脚本中写好回退的脚本即可。

更多内容可以参考官方文档说明:https://documentation.red-gate.com/fd/migrations-184127470.html#versioned-migrations

案例分析

首先需要引入flyway依赖包:

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

application.yml文件中添加flyway相关配置信息,开启flyway脚本迁移功能:

spring:
  flyway:
    # flyway 开启/关闭
    enabled: true
    # 当迁移时发现目标schema非空,而且带有没有元数据的表时,是否自动执行基准迁移,默认false.
    baseline-on-migrate: true
    # 是否允许无序的迁移,默认false.
    out-of-order: true
    # 迁移时是否校验,默认为true
    validate-on-migrate: false
    # 迁移脚本的位置,默认db/migration.
    locations: classpath:db
    # flyway 基线版本号
    baseline-version: 0
    # flyway 执行记录表
    table: demo_flyway_schema_history

在上面的配置中也描述了每个属性参数的作用,上面的脚本位置配置的是locations: classpath:db,在这里我们就可以将需要进行迁移执行的脚本文件,按上面的命名规范配置好之后存放到此目录下:

确认好文件存放位置无误之后,我们就可以直接启动服务:

如图服务启动成功后,我们就可以看到相关flyway执行的日志信息,如果是首次使用flyway迁移脚本的话,那么就会自动帮我们创建一个flyway执行记录表,表结构如下:

  • installed_rank:主键
  • version:版本号
  • description:文件描述
  • type:脚本类型
  • script:完整文件名
  • checksum:flyway通过特定的算法根据文件内容计算出来的一个整数,可以简单理解为文件内容的标识符,如果我们在配置中开启校验时(validate-on-migrate=true),如果我们文件内容有修改将计算出新的checksum与执行过的的checksum不一致时即会报mismatch的错误,以此来告知开发者脚本有变动。
  • installed_by:执行脚本的数据库用户
  • execution_time:执行时间
  • success:执行结果,0:失败,1:成功

总结

有了这么一个脚本迁移的工具,对于开发人员也好,对运维人员也罢,都能够减轻双方的负担,并且减少在部署时手动去执行脚本出错的风险,好的工具一直在为我们节约更多的时间,用上之后真的停不下来。

以上就是Java使用flyway实现脚本自动化的方法详解的详细内容,更多关于Java flyway实现脚本自动化的资料请关注脚本之家其它相关文章!

相关文章

  • 自己动手写一个java版简单云相册

    自己动手写一个java版简单云相册

    这篇文章主要为大家分享了自己动手写的一个java版简单云相册,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • 实战指南:Java编写Flink SQL解决难题

    实战指南:Java编写Flink SQL解决难题

    想知道如何利用Java编写Flink SQL解决难题吗?本指南将为您揭示最实用的技巧和策略,让您轻松应对挑战,跟着我们一起探索,让Java和Flink SQL成为您问题解决的得力助手!
    2023-12-12
  • Java京东面试题之为什么HashMap线程不安全

    Java京东面试题之为什么HashMap线程不安全

    那天,小二去京东面试,面试官老王一上来就甩给了他一道面试题:为什么 HashMap 是线程不安全的?这个问题哪能难的住小二,这篇文章详细解答该题目
    2021-11-11
  • Java数组(Array)最全汇总(中篇)

    Java数组(Array)最全汇总(中篇)

    这篇文章主要介绍了Java数组(Array)最全汇总(中篇),本文章内容详细,通过案例可以更好的理解数组的相关知识,本模块分为了三部分,本次为中篇,需要的朋友可以参考下
    2023-01-01
  • SpringBoot中使用Filter和Interceptor的示例代码

    SpringBoot中使用Filter和Interceptor的示例代码

    这篇文章主要介绍了SpringBoot中使用Filter和Interceptor的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • Java实例精炼掌握语法

    Java实例精炼掌握语法

    本章节我们将为大家介绍 Java 实现几大基础问题,通过实例学习我们可以更快的掌握 Java 的应用,感兴趣的朋友来看看吧
    2022-04-04
  • Java实现汽车租赁系统

    Java实现汽车租赁系统

    这篇文章介绍了Java实现汽车租赁系统的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • Java Email邮件发送简单实现介绍

    Java Email邮件发送简单实现介绍

    电子邮件从用户电脑的邮件软件,例如Outlook,发送到邮件服务器上,可能经过若干个邮件服务器的中转,最终到达对方邮件服务器上,收件方就可以用软件接收邮件
    2022-11-11
  • Spring Boot高级教程之Spring Boot连接MySql数据库

    Spring Boot高级教程之Spring Boot连接MySql数据库

    这篇文章主要为大家详细介绍了Spring Boot高级教程之Spring Boot连接MySql数据库,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • 深入探讨JAVA中的异常与错误处理

    深入探讨JAVA中的异常与错误处理

    这篇文章详细介绍了JAVA中的异常与错误处理,有需要的朋友可以参考一下
    2013-09-09

最新评论