本文介绍了“如何使用数据库迁移工件Flyway”的知识。很多人在实际案例的操作中会遇到这样的困难。让边肖带领你学习如何处理这些情况。希望大家认真阅读,学点东西!
数据迁移
前面提到的场景专业的术语是数据迁移,那么为什么会有数据迁移的场景呢?我从官网剪了一张图片,你可以看一下。虽然可能和我的实际开发不太一样,但是和这个场景差不多,有多个环境。可以看出,虽然我们的代码可以通过版本迭代来控制,但是我们的数据库不能,我们经常忘记脚本是否已经执行。这种事情只靠人是很难记住的。
Flyway
Flyway就是用来解决这种数据库迁移的工具。访问Flyway后,数据库中会默认生成一个名为flyway_schema_history的数据表来跟踪数据库的变化。当程序启动时,Flyway将在文件系统或类路径下查找迁移脚本。每个迁移步骤都有相应的命名规则。Flyway将根据文件的版本号进行迁移。每次迁移后,类似如下的记录将被插入flyway_schema_history表中,以记录脚本文件并检查与版本对应的代码。
每次启动时,只会执行脚本的最高版本,如果版本不变,则更改后的脚本无法启动。
Flyway 的迁移类型
版本迁移
最常见的迁移是版本化迁移,每个迁移将对应于迁移的版本,并且迁移的版本必须是全局唯一的。版本迁移最大的特点是只轮流执行。
撤销迁移
每一次撤销迁移都对应一次版本迁移,也就是说版本迁移存在撤销迁移,每一次撤销迁移都一一对应版本迁移,对应的版本号必须一致。
可重复迁移
重复迁移有描述和校验码,但没有版本号。当程序每次启动时,如果脚本文件有任何变化,它将被执行。
基于 SQL 的迁移
上述类型都是基于SQL文件实现的,只是每种类型的命名格式不同。下图摘自官网。当您查看每种类型的文件时,您应该根据以下格式进行命令,其中分隔符是两个下划线。
主要分为以下几个部分:
前缀:前缀。不同的类型使用不同的前缀。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' );
启动过程中我们看到如下日志,显示了当前的版本,以及迁移的版本。
我们再查看数据库,首先 test_table 已经创建成功了
另外我们在查看flyway_schema_history 表,会发现已经多了一条版本数据,至此我们介入 Flyway 已经成功了。
“如何使用数据库迁移神器Flyway”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/42845.html