在项目迭代开发中,难免会有更新数据库 Schema 的情况,比如添加新表、在表中增加字段或者删除字段等,那么当我对数据库进行一系列操作后,如何快速地在其他同事的电脑上同步?如何在测试/生产服务器上快速同步?
每次发版的时候,由于大家都可能有 sql 更改情况,这样就会有以下痛点:
以上问题以及痛点可以通过 Flyway 工具来解决,Flyway 可以实现自动化的数据库版本管理,并且能够记录数据库版本更新记录。
Flyway 是独立于数据库的应用、管理并跟踪数据库变更的数据库版本管理工具。用通俗的话讲,Flyway 可以像 Git 管理不同人的代码那样,管理不同人的 sql 脚本,从而做到数据库同步,更多的信息可以在 Flyway 的官网上进行阅读学习。
另外 Flyway 支持很多关系数据库,具体如下所示:
下面我们在 Spring Boot 中集成 Flyway 来实现数据库版本控制。
首先创建一个 SpringBoot 项目,然后在 pom.xml 加入如下依赖集成 Flyway:
org.flywaydbflyway-core5.2.4
然后在 application.yml 中写入 mysql 的配置及 Flyway 的相关配置(Flyway locations 默认读取当前项目下的 resources/db/migration 目录)
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC spring.datasource.username=root spring.datasource.password=123 spring.flyway.locations=classpath:/db/migration/
接下来,在 resources/db/migration 目录下创建需要执行的 SQL 脚本即可。
其中,SQL 脚本命名规范如下: