如何使用数据库迁移神器Flyway

技术如何使用数据库迁移神器Flyway本篇内容介绍了“如何使用数据库迁移神器Flyway”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,

本文介绍了“如何使用数据库迁移工件Flyway”的知识。很多人在实际案例的操作中会遇到这样的困难。让边肖带领你学习如何处理这些情况。希望大家认真阅读,学点东西!

数据迁移

前面提到的场景专业的术语是数据迁移,那么为什么会有数据迁移的场景呢?我从官网剪了一张图片,你可以看一下。虽然可能和我的实际开发不太一样,但是和这个场景差不多,有多个环境。可以看出,虽然我们的代码可以通过版本迭代来控制,但是我们的数据库不能,我们经常忘记脚本是否已经执行。这种事情只靠人是很难记住的。

如何使用数据库迁移神器Flyway

Flyway

Flyway就是用来解决这种数据库迁移的工具。访问Flyway后,数据库中会默认生成一个名为flyway_schema_history的数据表来跟踪数据库的变化。当程序启动时,Flyway将在文件系统或类路径下查找迁移脚本。每个迁移步骤都有相应的命名规则。Flyway将根据文件的版本号进行迁移。每次迁移后,类似如下的记录将被插入flyway_schema_history表中,以记录脚本文件并检查与版本对应的代码。

如何使用数据库迁移神器Flyway

每次启动时,只会执行脚本的最高版本,如果版本不变,则更改后的脚本无法启动。

如何使用数据库迁移神器Flyway

Flyway 的迁移类型

版本迁移

最常见的迁移是版本化迁移,每个迁移将对应于迁移的版本,并且迁移的版本必须是全局唯一的。版本迁移最大的特点是只轮流执行。

撤销迁移

每一次撤销迁移都对应一次版本迁移,也就是说版本迁移存在撤销迁移,每一次撤销迁移都一一对应版本迁移,对应的版本号必须一致。

可重复迁移

重复迁移有描述和校验码,但没有版本号。当程序每次启动时,如果脚本文件有任何变化,它将被执行。

基于 SQL 的迁移

上述类型都是基于SQL文件实现的,只是每种类型的命名格式不同。下图摘自官网。当您查看每种类型的文件时,您应该根据以下格式进行命令,其中分隔符是两个下划线。

如何使用数据库迁移神器Flyway

主要分为以下几个部分:

前缀:前缀。不同的类型使用不同的前缀。v用于版本迁移,U用于撤销迁移,R用于重复迁移。当然,这些都是可配置的。

版本:版本号,可用点号或单下划线链接;

分隔符:分隔符,两个下划线,也可以配置;

描述:版本描述可以用下划线和空格分隔;

后缀:后缀,通常。sql。

SpringBoot 项目接入 Flyway

SpringBoot项目访问Flyway非常简单,可以分为以下几个步骤。让我们依次看一下。

加入依赖

!-flyway-dependencygroupidg . flyway db/group idartifactidflyway-core/artifactid/dependency只需在项目的pom.xml文件中添加上述依赖项即可。

增加配置

#启用flyway spring.flyway enabled=true #禁止清理数据表spring . flyway .

clean-disabled=true # 是否已经有数据库 spring.flyway.baseline-on-migrate=true # 基础版本号,依次递增 spring.flyway.baseline-version=0 # 迁移脚本的存放的位置 spring.flyway.locations=classpath:db/migration

这里因为很多情况下我们并不是一个新项目就开始使用  Flyway,而是项目在迭代中才引入的,所以上面的配置spring.flyway.clean-disabled=true 一定要禁用。上面几个配置由于已经继承到  SpringBoot 中了所以配置起来十分简单。

迁移脚本

文件脚本的命名规则按照上面说的,我们这边采用版本迁移。我们创建一个版本的 SQL  文件放到对应的类路径文件夹里面,文件名叫V1.2__create_test_table.sql,文件内容如下,然后我们启动项目。

CREATE TABLE `test_table`  (   `id` int(11) NULL COMMENT 'ID',   `name` varchar(255) NULL COMMENT 'Name' );

启动过程中我们看到如下日志,显示了当前的版本,以及迁移的版本。

如何使用数据库迁移神器Flyway

我们再查看数据库,首先 test_table 已经创建成功了

如何使用数据库迁移神器Flyway

另外我们在查看flyway_schema_history 表,会发现已经多了一条版本数据,至此我们介入 Flyway 已经成功了。

如何使用数据库迁移神器Flyway

“如何使用数据库迁移神器Flyway”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/42845.html

(0)

相关推荐

  • 用python画圣诞树的代码(如何使用python绘制圣诞树)

    技术如何使用Python画一棵圣诞树如何使用Python画一棵圣诞树,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。t.pensize(10) # 修改画笔大

    攻略 2021年12月21日
  • gitlab关闭ssl验证(gitlab 扫描)

    技术仍然会使用eolinker扫描GitLab代码注释自动本篇文章给大家分享的是有关仍然会使用eolinker扫描GitLab代码注释自动,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不

    攻略 2021年12月24日
  • 面向对象设计原则之合成复用原则

    技术面向对象设计原则之合成复用原则 面向对象设计原则之合成复用原则转载来自:https://blog.csdn.net/lovelion/article/details/7563441
    合成复用原则又称

    礼包 2021年11月5日
  • Windows中kafka zookeeper安装

    技术Windows中kafka zookeeper安装 Windows中kafka zookeeper安装Windows中kafka安装步骤 https://blog.csdn.net/qq_43641

    礼包 2021年12月1日
  • 如何解决interval 分区表clob默认表空间指定问题

    技术如何解决interval 分区表clob默认表空间指定问题这篇文章将为大家详细讲解有关如何解决interval 分区表clob默认表空间指定问题,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后

    攻略 2021年11月30日
  • html中设置背景颜色的语句是(html中设置背景颜色的代码是)

    技术在html中设置背景颜色的代码是什么这篇文章主要为大家展示了“在html中设置背景颜色的代码是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“在html中设置背景颜色的

    攻略 2021年12月19日