跳至主要内容

如何在 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 廣告