ruoyi系列框架是开源中非常好的源码平台,使用宽松的开源协议进行源代码的开放。不管是单体版、前后端分离甚至是微服务架构,均提供了相应的代码。基于ruoyi可以做自己的后台系统,也可以学习很多技术的集成。
而flyway是java里面的数据库脚本自动管理工具,使用flyway可以在应用程序升级时自动管理sql脚本,从而避免用户忘记而带来的没有执行脚本引起的问题。是多版本开发中非常好用的sql版本管理组件。
官方的ruoyi框架并没有集成flyway,在开源生态中是有一些爱好者自己基于ruoyi来进行集成。本文将简单分享基于ruoyi单体版(其它版本类同)如何集成flyway,在集成的过程中会遇到什么问题,同时分享三种解决方案。
flyway在ruoyi框架中的集成
1、在ruoyi的pom.xml中定义flyway依赖,具体代码如下所示:
<!-- 数据库版本控制核心依赖 -->
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
</dependency>
<!-- 数据库版本控制插件 -->
<plugin>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
</plugin>
2、系统配置文件application.yml定义flyway相关配置
flyway:
# 字符编码
encoding: utf-8
# 对执行迁移时基准版本的描述
baseline-description: BaseLineInitialize
# 若连接的数据库非空库,是否初始化
# 当迁移时发现目标schema非空,而且带有没有元数据的表时,是否自动执行基准迁移,默认false.
baseline-on-migrate: true
# 指定 baseline 的版本号,缺省值为 1, 低于该版本号的 SQL 文件, migrate 的时候被忽略
# 开始执行基准迁移时对现有的schema的版本打标签,默认值为1.
baseline-version: 1.0.0
# 是否开启校验
# 迁移时是否校验,默认为 true
validate-on-migrate: true
# 开发环境最好开启 outOfOrder, 生产环境关闭 outOfOrder
# 是否允许无序的迁移,默认 false
out-of-order: true
# 当读取元数据表时是否忽略错误的迁移,默认false
ignore-future-migrations: false
# 当初始化好连接时要执行的SQL
init-sql: SELECT * FROM pg_tables WHERE tablename NOT LIKE'pg%' AND tablename NOT LIKE'sql_%' ORDER BY tablename;
3、定义flyway配置bean
package com.hngtghy.framework.config;
import javax.annotation.PostConstruct;
import javax.sql.DataSource;
import org.flywaydb.core.Flyway;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
@Configuration
public class FlywayConfig {
@Autowired
private DataSource dataSource;
// 字符编码
@Value("${flyway.encoding}")
private String encoding;
// 对执行迁移时基准版本的描述
@Value("${flyway.baseline-description}")
private String baselineDescription;
// 是否自动执行基准迁移
@Value("${flyway.baseline-on-migrate}")
private boolean baselineOnMigrate;
标签:baseline,Ruoyi,flyway,ruoyi,报错,org,import,迁移
From: https://blog.51cto.com/u_16039070/7150478