SpringBoot+Flyway进行数据表自动迁移和填充

39次阅读
没有评论

共计 1046 个字符,预计需要花费 3 分钟才能阅读完成。

前言

对于传统的应用,想必大家线上和开发的数据库表结构升级或数据迁移等操作都是手把手一条龙,或者使用 navicat 此类的工具进行结构同步。
但是对于多环境的应用,这样手把手去操作就比较麻烦了,而且还有可能会出错,如果我们使用数据库版本管理工具进行自动迁移和数据填充,就可以直接适配到 N 多个环境,再也不用去担心每个环境数据库结构的差异。

依赖

首先,我们需要先引入  Flyway  的依赖,大家也可以到这里去查找版本:https://mvnrepository.com/artifact/org.flywaydb/flyway-core

<dependency>    <groupId>org.flywaydb</groupId>    <artifactId>flyway-core</artifactId>    <version>7.1.1</version></dependency>

需要注意,如果你使用的数据库版本是 5.7,则不能使用最新的版本,版本 7.1.1 实测可以用于 5.7。

配置

我们需要在  application.yml  中开启自动迁移配置:

spring:  flyway:    baseline-on-migrate: true    clean-disabled: true

开启以上配置,会在数据库中自动创建名为  flyway_schema_history  的表,已记录迁移数据和状态。

表文件规则

默认 DDL 的 SQL 文件读取位置为  /resource/db/migration  下,你也可以使用  spring.flyway.locations  进行自定义设定;
然后我们在此目录下新增 DDL/DML 文件即可,不过有几点需要注意:

  1. 数据表以  Vx.x.x__  开头,其中  x.x.x  代表版本号,你可以为  x.x  或者  x,这都是没问题的;比如 V2.0.0  的新增用户表即为 V2.0.0__create_user_ddl.sql
  2. 以  Rx.x.x__  开头的文件会重复执行,如果你修改了此文件则会进行执行,无修改则不会执行。
  3. 以  Vx.x.x__  开头的文件一旦执行成功,便不允许再进行任何修改,不然会出现启动异常。
  4. 版本号应该全局唯一的,不然会抛出异常提示有重复的版本,建议递增处理。

另外,如果是基础表结构可以直接名为 V1.0.0__init.sql,这样就会在没有数据表的环境中执行创建并初始化表结构。

最后

至于什么时候要用到  Flyway  呢?个人认为在协同开发、有多环境、表结构迭代多的情况就使用此工具,避免手动迁移可能导致的遗漏等问题。

正文完
 0
litao2024
版权声明:本站原创文章,由 litao2024 于2024-06-06发表,共计1046字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码