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

相关推荐

  • Django模块怎么部署

    技术Django模块怎么部署这篇文章主要为大家展示了“Django模块怎么部署”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Django模块怎么部署”这篇文章吧。在Djang

    攻略 2021年11月24日
  • redis中RedissonLock如何实现等待锁

    技术redis中RedissonLock如何实现等待锁今天就跟大家聊聊有关redis中RedissonLock如何实现等待锁,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有

    攻略 2021年11月11日
  • 理解 JavaScript 闭包

    技术理解 JavaScript 闭包 理解 JavaScript 闭包闭包,是 Javascript 比较重要的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是 ECMAScript 规范给的

    礼包 2021年12月14日
  • drupal漏洞分析(drupal代码分析)

    技术如何进行Drupal核心远程代码执行漏洞的分析今天就跟大家聊聊有关如何进行Drupal核心远程代码执行漏洞的分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

    攻略 2021年12月20日
  • 人用C#开发ActiveX控件并使用web调用

    技术人用C#开发ActiveX控件并使用web调用人用C#开发ActiveX控件并使用web调用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。入职差不多两个

    攻略 2021年10月29日
  • LN3,若a=ln22 b=ln3

    技术LN3,若a=ln22 b=ln3b>a>ca/b=3ln2/2ln3=ln8/ln9<1,a<b
    b/c=5ln3/3ln5=ln243/ln125>1,b>c
    a/c=5ln2/2ln5=ln32/ln25>1,

    生活 2021年10月26日