跳到主要内容

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

· 2 分钟阅读
Eric Cheng

以往的习惯,都要建一个 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 廣告