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

相关推荐

  • iOS如何实现多代理模式--OC

    技术iOS如何实现多代理模式--OC iOS如何实现多代理模式--OCOC 如何实现多代理模式
    为什么要使用多代理模式
    标题虽然是如何实现多代理模式,但是知道为什么需要实现多代理模式同样重要。
    众所周知

    礼包 2021年12月7日
  • html中一个表格由哪些部分组成

    技术html中一个表格由哪些部分组成本篇内容主要讲解“html中一个表格由哪些部分组成”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“html中一个表格由哪些部分组成”吧!

    攻略 2021年11月17日
  • mysql中char和varchar的区别有哪些

    技术mysql中char和varchar的区别有哪些本篇内容主要讲解“mysql中char和varchar的区别有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql

    攻略 2021年12月3日
  • 怎么在PAAS平台上部署O2OA开发平台

    技术怎么在PAAS平台上部署O2OA开发平台这篇文章主要讲解了“怎么在PAAS平台上部署O2OA开发平台”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么在PAAS平台上

    攻略 2021年10月30日
  • apache spark处理安全日志(apache远程执行漏洞)

    技术Apache Spark远程代码执行漏洞怎么解决本篇内容介绍了“Apache Spark远程代码执行漏洞怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这

    攻略 2021年12月16日
  • 无权限访问共享文件夹,文件夹共享了但是不能访问权限

    技术无权限访问共享文件夹,文件夹共享了但是不能访问权限1.guest账户开启2.允许Guest用户从网络访问本机点击“开始→运行”无权限访问共享文件夹,在“运行”对话框中输入“GPEDIT.MSC”,打开组策略编辑器,依

    生活 2021年10月29日