跳至主要内容

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