使用flyway管理spring boot测试数据库 - Go语言中文社区

使用flyway管理spring boot测试数据库


本文主要记录一下使用flyway管理spring boot测试环境的数据库(h2)
之前直接使用的spring.datasource里面的schema和data属性配置的,不过数据库一直变更,每次都修改相关的配置文件太麻烦了,于是引入了flyway,进行版本管理,以后变更数据库,可以直接添加高版本的配置文件即可。

添加gradle依赖

testCompile "org.flywaydb:flyway-core:5.2.4"

配置flyway

在application.yml文件中添加配置:

spring:
  flyway:
    enabled: true
    locations: classpath:db/migration
    baseline-on-migrate: true
    baseline-version: 1
    validate-on-migrate: true
  • enabled: 默认true,spring boot启动时自动进行flyway迁移
  • locations: flyway相关数据库文件的位置
  • baseline-on-migrate:是否使用baseline,配合baseline-version使用,迁移的时候自动忽略版本号低于指定baseline-version的文件
  • validate-on-migrate:对于每个迁移是否自动计算CRC32校验和

在test下的resources目录下面创建目录:db/migration
在该目录下创建flyway的相关数据库配置文件,可以包括表的创建修改、表内数据的增删改等。
文件的格式:
数据的迁移一共有三种类型:Versioned Migrations、Undo Migrations、Repeatable Migrations

  • Versioned Migrations:以V开头(可以在配置文件中进行自定义配置),然后紧跟版本号,版本号以 _或者.分隔,然后是分隔符 __ (两个 _),之后是文件的描述信息(以下划线或者空格分隔单词),最后是文件后缀.sql。(可选的版本化迁移可以省略分隔符和描述信息)
  • Undo Migrations:以U开头(可以在配置文件中进行自定义配置),然后紧跟版本号,版本号以 _或者.分隔,然后是分隔符 __(两个 _),之后是文件的描述信息(以下划线或者空格分隔单词),最后是文件后缀.sql。
  • Repeatable Migrations:以R开头(可以在配置文件中进行自定义配置),然后紧跟分隔符 __(两个 _),之后是文件的描述信息(以下划线或者空格分隔单词),最后是文件后缀.sql。
    样例如下,我只使用了版本化迁移:
    第一个文件初始化数据库表,第二个文件初始化数据库表的数据。
    在这里插入图片描述
    文件V1_1__initial_setup.sql:
DROP table if exists user;
create table user
(
  user_key                    varchar(50)                         not null
    primary key,
  name                        varchar(100)                        not null,
  description                 varchar(100)                        null,
  email                       varchar(100)                        null,
  photo                       varchar(100)                        null
);

文件V1_2__initial_data.sql:

INSERT INTO user (user_key, name, description) VALUES ('LG001', 'Lucy', 'A good girl');

然后启动spring boot的测试时,将自动使用flyway进行数据库的初始化操作。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/gao_grace/article/details/103926289
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢