自学内容网 自学内容网

SpringBoot配置flyway

背景

目前我们的项目代码都会交由Git、SVN等版本管理工具进行管理,但是我们的sql脚本,尤其是各类ddl脚本并没有进行版本的管理(python的web框架Django默认就提供了类似的工具,从一开始就鼓励开发者通过版本管理的方式进行数据库的变更)。当我们的项目从一个环境迁移到另一个中时,往往需要手工来完成表的初始化工作,这一环节中由于各种原因可能会出现脚本的遗漏导致上线失败。因此我们需要一个数据库版本管理工具来代替人工操作,完成数据库表的升级变更。

在Springboot这个生态下,主流的是flyway和liquibase,相较于liquibase,flyway的配置会更加简单,这里使用flyway作为数据库管理工具。

最新版本的flyway不再支持mysql 5.7及以下版本,如果需要使用mysql5.7可以考虑商业版本,或者降低flyway的版本并自行完成相关bean的初始化工作,又或者使用别的工具替换

相关配置

添加依赖

首先是添加依赖,我们使用spring-boot-starter-parent作为父级项目,可以在依赖中直接添加flyway-mysql,这里如果使用别的数据库,可以根据需要替换为相应的依赖

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-mysql</artifactId>
</dependency>

配置文件

flyway默认会使用已经配置好的数据源,如果需要更加精细化的管理,也可以自行指定

配置项参考值备注
spring.flyway.locationsclasspath:/db/migration脚本存放的路径,resources/db/migration
spring.flyway.baseline-on-migratetrue如果数据库已经有表,需要设为true
spring.flyway.user数据库用户
spring.flyway.password数据库密码
spring.flyway.urlJDBC url

数据脚本管理

交由flyway管理的脚本都需要放在spring.flyway.locations配置的目录下,并且文件名有一定的格式要求

[V|R]{版本号}__{脚本描述}.sql

V代表一次性执行脚本,R代表可重复执行脚本,一个例子

在这里插入图片描述

flyway会在数据库中创建一个名为flyway_schema_history,所有执行过的脚本都会存放在表中。


原文地址:https://blog.csdn.net/nyzzht123/article/details/140318804

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!