以往的习惯,都要建一个 SQL 的目录,来记录 table schema 做了什么样的修改,才能确认 schema 的版本,但如果共同开发的话,还是常有人会修改了却忘了 commit 修改的内容造成 schema 的不一致
Flyway 提供管理 SQL 指令码,在 Spring boot 启动时自动执行预设路径的 SQL 指令
Flyway
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 档案
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
select table 内容可以看见刚才执行的 sql 已被记录
下次启动时会去比对 flyway_schema_history 的记录,如果已被执行则不会再执行
很好用的工具,即使换了个环境,只要重新启动 spring boot 就可以将应该执行的 SQL 全部执行完毕了