当前位置:   article > 正文

Flyway使用教程

Flyway使用教程

Flyway使用教程

背景:开发环境对多个不同版本的分支进行开发,如果此时涉及到多张表结构修改(比如新增字段),而在测试环境时却忘了整理SQL 脚本给测试人员执行,就会导致出现 bug,从而影响测试的工作效率。笔主所在公司是主要是通过人工维护来执行数据库脚本的,很多时候都会出现遗漏脚本的情况。针对这种情况,我们引入了Flyway来进行脚本管理。

简介: Flyway是一款开源的数据库版本管理工具,可以实现管理并跟踪数据库变更,支持数据库版本自动升级,而且不需要复杂的配置,能够帮助团队更加方便、合理的管理数据库变更。

原理: 通过对比校验和来判断脚本是否有变更

脚本命名规则

1、仅需要执行一次的,以大写 V 开头,V + 版本号 + " __ " (两个下划线) + 文件描述 + 后缀名(一般是.sql)

2、需要执行多次的,以大写“R”开头,命名如 R__clean.sqlR的脚本只要改变了就会执行, R不带版本号

3、V开头的比R开头的优先级要高

注意: 版本号间的数字以 . 或者 _ 分隔开, _ 会自动编译成 .

整合springboot
<spring-boot.version>2.6.13</spring-boot.version>

<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
    <version>5.2.4</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<dependency>
    <groupId>org.yaml</groupId>
    <artifactId>snakeyaml</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

yml配置

spring:
  flyway:
    # 是否开启flywary,默认true
    enabled: true
    #迁移时是否校验,默认为true
    validate-on-migrate: true
    #是否允许无序的迁移,默认false
    out-of-order: false
    #迁移脚本的位置,默认db/migration.
    locations: classpath:db/migration
    # metadata 版本控制信息表 默认 flyway_schema_history
    table: flyway_schema_history
    # 如果没有 flyway_schema_history 这个 metadata 表, 在执行 flyway migrate 命令之前, 必须先执行 flyway baseline 命令
    # 设置为 true 后 flyway 将在需要 baseline 的时候, 自动执行一次 baseline
    baseline-on-migrate: true
    # 指定 baseline 的版本号,默认值为 1, 低于该版本号的 SQL 文件, migrate 时会被忽略
    baseline-version: 1
    #设定需要flywary迁移的schema,大小写敏感,默认为连接默认的schema.
    schemas: flyway,test
    #设置迁移时的编码,默认UTF-8
    encoding: UTF-8
    # flyway 的 clean 命令会删除指定 schema 下的所有 table, 生产务必禁掉
    clean-disabled: true
  datasource:
    url: jdbc:mysql://localhost:3306/flyway
    username: root
    password: xxxxxxx
    driver-class-name: com.mysql.cj.jdbc.Driver
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

创建需要迁移的脚本

在这里插入图片描述

V1_2_5__INSERT.sql内容如下

INSERT INTO `test`.`tmsaj` (`cbh`, `ajmc`, `jbfy`, `cdsr`) VALUES ('01001c91c61fe64dc0643b99e575fd75', '1024', 6837069, 'Eleanor Williams');
  • 1

启动后,数据库会新建flyway_schema_history(版本控制信息表),并且有执行的版本记录

在这里插入图片描述

官方文档:https://documentation.red-gate.com/fd/quickstart-how-flyway-works-184127223.html?_gl=1*bqppmo*_ga*NTk1MjQ4MDAxLjE3MTQ4NzIxMjY.*_ga_X7VDRWRT4P*MTcxNDg3MjEyNi4xLjEuMTcxNDg3MjIzOS40My4wLjA.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/595587
推荐阅读
  

闽ICP备14008679号