From 62549e0a1c1e1df66c9e83191e4643b4c3caa007 Mon Sep 17 00:00:00 2001 From: JEECG <445654970@qq.com> Date: Tue, 25 Nov 2025 17:11:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=93=E5=BC=80flyway=20=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E8=87=AA=E5=8A=A8=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jeecg-system-start/pom.xml | 4 +- .../org/jeecg/config/flyway/FlywayConfig.java | 89 ++++++++++--------- 2 files changed, 48 insertions(+), 45 deletions(-) diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-start/pom.xml b/jeecg-boot/jeecg-module-system/jeecg-system-start/pom.xml index 06e75b927..b4e44bb51 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-start/pom.xml +++ b/jeecg-boot/jeecg-module-system/jeecg-system-start/pom.xml @@ -25,12 +25,12 @@ ${jeecgboot.version} - org.flywaydb flyway-core 7.15.0 - --> + org.springframework.boot diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/config/flyway/FlywayConfig.java b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/config/flyway/FlywayConfig.java index 129f1632a..6b9193d90 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/config/flyway/FlywayConfig.java +++ b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/config/flyway/FlywayConfig.java @@ -1,7 +1,10 @@ package org.jeecg.config.flyway; import com.baomidou.dynamic.datasource.DynamicRoutingDataSource; +import jakarta.annotation.PostConstruct; import lombok.extern.slf4j.Slf4j; +import org.flywaydb.core.Flyway; +import org.flywaydb.core.api.FlywayException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -13,11 +16,11 @@ import javax.sql.DataSource; import java.util.Map; /** -* @Description: 初始化flyway配置 修改之后支持多数据源,当出现异常时打印日志,不影响项目启动 -* -* @author: wangshuai -* @date: 2024/3/12 10:03 -*/ + * @Description: 初始化flyway配置 修改之后支持多数据源,当出现异常时打印日志,不影响项目启动 + * + * @author: wangshuai + * @date: 2024/3/12 10:03 + */ @Slf4j @Configuration public class FlywayConfig { @@ -93,42 +96,42 @@ public class FlywayConfig { */ @Value("${spring.flyway.clean-disabled:true}") private Boolean cleanDisabled; - -// @Bean -// public void migrate() { -// if(!enabled){ -// return; -// } -// -// DynamicRoutingDataSource ds = (DynamicRoutingDataSource) dataSource; -// Map dataSources = ds.getDataSources(); -// dataSources.forEach((k, v) -> { -// if("master".equals(k)){ -// String databaseType = environment.getProperty("spring.datasource.dynamic.datasource." + k + ".url"); -// if (databaseType != null && databaseType.contains("mysql")) { -// try { -// Flyway flyway = Flyway.configure() -// .dataSource(v) -// .locations(locations) -// .encoding(encoding) -// .sqlMigrationPrefix(sqlMigrationPrefix) -// .sqlMigrationSeparator(sqlMigrationSeparator) -// .placeholderPrefix(placeholderPrefix) -// .placeholderSuffix(placeholderSuffix) -// .sqlMigrationSuffixes(sqlMigrationSuffixes) -// .validateOnMigrate(validateOnMigrate) -// .baselineOnMigrate(baselineOnMigrate) -// .cleanDisabled(cleanDisabled) -// .load(); -// flyway.migrate(); -// log.info("【升级提示】平台集成了MySQL库的Flyway,数据库版本自动升级! "); -// } catch (FlywayException e) { -// log.error("【升级提示】flyway执行sql脚本失败", e); -// } -// } else { -// log.warn("【升级提示】平台只集成了MySQL库的Flyway,实现了数据库版本自动升级! 其他类型的数据库,您可以考虑手工升级~"); -// } -// } -// }); -// } + + @PostConstruct + public void migrate() { + if(!enabled){ + return; + } + + DynamicRoutingDataSource ds = (DynamicRoutingDataSource) dataSource; + Map dataSources = ds.getDataSources(); + dataSources.forEach((k, v) -> { + if("master".equals(k)){ + String databaseType = environment.getProperty("spring.datasource.dynamic.datasource." + k + ".url"); + if (databaseType != null && databaseType.contains("mysql")) { + try { + Flyway flyway = Flyway.configure() + .dataSource(v) + .locations(locations) + .encoding(encoding) + .sqlMigrationPrefix(sqlMigrationPrefix) + .sqlMigrationSeparator(sqlMigrationSeparator) + .placeholderPrefix(placeholderPrefix) + .placeholderSuffix(placeholderSuffix) + .sqlMigrationSuffixes(sqlMigrationSuffixes) + .validateOnMigrate(validateOnMigrate) + .baselineOnMigrate(baselineOnMigrate) + .cleanDisabled(cleanDisabled) + .load(); + flyway.migrate(); + log.info("【数据库升级】平台集成了MySQL库的Flyway,数据库版本自动升级! "); + } catch (FlywayException e) { + log.error("【数据库升级】flyway执行sql脚本失败", e); + } + } else { + log.warn("【数据库升级】平台只集成了MySQL库的Flyway,实现了数据库版本自动升级! 其他类型的数据库,您可以考虑手工升级~"); + } + } + }); + } } \ No newline at end of file