如何使用数据库迁移神器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)

相关推荐

  • Jmeter中使用循环如何保证数据不重复

    技术Jmeter中使用循环如何保证数据不重复本篇文章为大家展示了Jmeter中使用循环如何保证数据不重复,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在Jmeter中设置并发为S

    攻略 2021年11月17日
  • 如何通过Python爬取网页抖音热门视频

    技术如何通过Python爬取网页抖音热门视频如何通过Python爬取网页抖音热门视频,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前言抖音短视频相信大家都听

    攻略 2021年10月26日
  • CSS中解决div列高度自适应的3种常用方法分别是什么

    技术CSS中解决div列高度自适应的3种常用方法分别是什么CSS中解决div列高度自适应的3种常用方法分别是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的

    攻略 2021年11月2日
  • JVM如何运行时数据区

    技术JVM如何运行时数据区JVM如何运行时数据区,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1. 运行时数据区 1)堆:线程共享,存放新建

    攻略 2021年10月23日
  • ORACLE优化器RBO与CBO有什么用

    技术ORACLE优化器RBO与CBO有什么用这篇文章主要介绍了ORACLE优化器RBO与CBO有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。RBO

    攻略 2021年11月11日
  • python实现中心极限定理(用python求极限limit)

    技术Python怎么实现中心极限定律这篇文章主要讲解了“Python怎么实现中心极限定律”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么实现中心极限定律”吧

    攻略 2021年12月21日