跳到主要内容

如何在 Spring Boot 使用 Flyway 替资料库做版控 简单笔记

· 2 分钟阅读
Eric Cheng
Eric Cheng
JAVA 後端工程師

以往的习惯,都要建一个 SQL 的目录,来记录 table schema 做了什么样的修改,才能确认 schema 的版本,但如果共同开发的话,还是常有人会修改了却忘了 commit 修改的内容造成 schema 的不一致

Flyway 提供管理 SQL 指令码,在 Spring boot 启动时自动执行预设路径的 SQL 指令

Flyway​

【官网】、【Github】

Spring boot 专案设定​

gradle 新增 dependencies

  • org.springframework.boot:spring-boot-starter-jdbc (没有的话要新增)
  • org.flywaydb:flyway-core
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
implementation 'org.flywaydb:flyway-core'
}

在目录 db.migration 下新增执行的 SQL 档案

spring-boot-flyway 0

SQL 档名格式如下

  • Prefix: V : version, U: undo, R: repeatable
  • Version: 数字和 dots 组合, ex: 2, 2.1 ...etc
  • Separator: __ (两个底线)
  • Description: 字串和 _ (一个底线)组成
  • Suffix: .sql

在 spring boot 启动后,会自动执行 SQL

且会自动建立一个 table: flyway_schema_history

spring-boot-flyway 1

select table 内容可以看见刚才执行的 sql 已被记录

下次启动时会去比对 flyway_schema_history 的记录,如果已被执行则不会再执行

spring-boot-flyway 2

很好用的工具,即使换了个环境,只要重新启动 spring boot 就可以将应该执行的 SQL 全部执行完毕了



版權聲明

,轉載請註明出處
本文連結: https://tech.havocfuture.tw/blog/spring-boot-flyway



這是 google 廣告