首页>>后端>>SpringBoot->SpringBoot集成Flyway数据库版本管理

SpringBoot集成Flyway数据库版本管理

时间:2023-11-30 本站 点击:0

前言

最近项目里面有人推荐用Flayway做数据库版本管理,在平时项目开发中维护好脚本自动执行,无需人为执行数据库同步操作。在我们平时开发过程中开发环境配置同步还行,但是生产和测试环境还是不推荐使用, 生产账号权限管理,系统的数据库账号一般只有DML的权限,没有DDL操作的权限。

FlayWay 基本工作原理

FlayWay 通过历史记录表(flyway_schema_history)来记录版本历史。每次随项目启动时将会自动扫描在resources/db/migration下的文件并查询flyway_schema_history判断是否为新增文件。如果是新增的文件,则执行该迁移文件。如果不是,则忽略。

主要是这两步:

当flyway在一个空数据库执行时,它将直接创建一张默认名为 flyway_schema_history的数据记录为空的历史记录表,这张表将被用来跟踪或记录数据库的状态。

flyway将会开始扫描文档系统或项目classpath路径下的迁移文件。

SpringBoot 集成Flyway

引入FlyWay依赖

<dependency><groupId>org.flywaydb</groupId><artifactId>flyway-core</artifactId><version>5.2.1</version></dependency>

FlyWay 配置

flyway:baseline-on-migrate:truelocations:classpath:db/migrationcheck-location:trueenabled:true

启动工程

我们可以看到会初始化一张历史表, flyway_schema_history

创建V1.1.sql, 重启应用就会多一个修改版本记录, 数据库中表字段自动增加。

Altertablesmp_down_link_recordaddcolumn`create_by`int(10)NOTNULLcomment'创建人';

FAQ

SpringBoot 集成之后报错,报错信息

java.sql.SQLSyntaxErrorException:SELECTcommanddeniedtouser'test'@'127.0.0.1'fortable'user_variables_by_thread'\atcom.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)

解决的办法降低版本

FlyWay 接入的过程中其实也遇到一些,问题FlayWay其实需要的权限比较大,还有一些潜在的坑,下来也列了一下需要避免的一些坑。个人任务接入最好的方式是中间件团队将配置封装一些, 否则导致数据库被删除了,反而得不偿失。 一般只建议在开发环境做同步,测试和生产环境还是按照升级脚本执行,比较完全。

参考文档

官网 GitHUB: https://github.com/flyway


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/SpringBoot/4353.html