From 09d798a3d26e850acdc34233cf9fdf185c2a096c Mon Sep 17 00:00:00 2001 From: Tian jianyong <11429339@qq.com> Date: Fri, 8 Aug 2025 15:07:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9flyway=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E8=BF=90=E8=A1=8C=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- qaup-admin/pom.xml | 34 +++++++++ .../com/qaup/common/config/FlywayConfig.java | 71 +++++++++++++------ .../db/migration/V1.0.0__Initial_baseline.sql | 2 +- 3 files changed, 84 insertions(+), 23 deletions(-) diff --git a/qaup-admin/pom.xml b/qaup-admin/pom.xml index bcd03ce3..f85bf088 100644 --- a/qaup-admin/pom.xml +++ b/qaup-admin/pom.xml @@ -109,6 +109,40 @@ false ${project.artifactId} + + + + org.flywaydb + flyway-maven-plugin + ${flyway.version} + + jdbc:postgresql://localhost:5432/qaup?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=Asia/Shanghai + postgres + 123456 + + classpath:db/migration + + true + 1.0.0 + Initial baseline from existing database + true + true + false + UTF-8 + false + + + + org.postgresql + postgresql + 42.7.4 + + + org.flywaydb + flyway-database-postgresql + ${flyway.version} + + ${project.artifactId} diff --git a/qaup-admin/src/main/java/com/qaup/common/config/FlywayConfig.java b/qaup-admin/src/main/java/com/qaup/common/config/FlywayConfig.java index 7a2ef53c..1b637f5d 100644 --- a/qaup-admin/src/main/java/com/qaup/common/config/FlywayConfig.java +++ b/qaup-admin/src/main/java/com/qaup/common/config/FlywayConfig.java @@ -4,14 +4,15 @@ import org.flywaydb.core.Flyway; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.autoconfigure.flyway.FlywayProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.scheduling.annotation.EnableScheduling; import javax.sql.DataSource; +import java.util.List; /** * Flyway数据库迁移配置 @@ -31,8 +32,36 @@ public class FlywayConfig { @Autowired private DataSource dataSource; - @Autowired - private FlywayProperties flywayProperties; + // 直接从配置文件读取Flyway配置,避免依赖FlywayProperties bean + @Value("${spring.flyway.locations:classpath:db/migration}") + private List locations; + + @Value("${spring.flyway.baseline-on-migrate:true}") + private boolean baselineOnMigrate; + + @Value("${spring.flyway.baseline-version:1.0.0}") + private String baselineVersion; + + @Value("${spring.flyway.baseline-description:Initial baseline from existing database}") + private String baselineDescription; + + @Value("${spring.flyway.validate-on-migrate:true}") + private boolean validateOnMigrate; + + @Value("${spring.flyway.clean-disabled:true}") + private boolean cleanDisabled; + + @Value("${spring.flyway.out-of-order:false}") + private boolean outOfOrder; + + @Value("${spring.flyway.encoding:UTF-8}") + private String encoding; + + @Value("${spring.flyway.placeholder-replacement:false}") + private boolean placeholderReplacement; + + @Value("${spring.flyway.table:flyway_schema_history}") + private String table; /** * 自定义Flyway配置 @@ -48,35 +77,33 @@ public class FlywayConfig { Flyway flyway = Flyway.configure() .dataSource(dataSource) // 迁移脚本位置 - .locations(flywayProperties.getLocations().toArray(new String[0])) + .locations(locations.toArray(new String[0])) // 基线迁移设置 - .baselineOnMigrate(flywayProperties.isBaselineOnMigrate()) - .baselineVersion(flywayProperties.getBaselineVersion()) - .baselineDescription(flywayProperties.getBaselineDescription()) + .baselineOnMigrate(baselineOnMigrate) + .baselineVersion(baselineVersion) + .baselineDescription(baselineDescription) // 迁移验证 - .validateOnMigrate(flywayProperties.isValidateOnMigrate()) + .validateOnMigrate(validateOnMigrate) // 生产环境安全设置 - .cleanDisabled(flywayProperties.isCleanDisabled()) + .cleanDisabled(cleanDisabled) // 不允许乱序迁移 - .outOfOrder(flywayProperties.isOutOfOrder()) + .outOfOrder(outOfOrder) // 编码设置 - .encoding(flywayProperties.getEncoding()) + .encoding(encoding) // 占位符配置 - .placeholderReplacement(flywayProperties.isPlaceholderReplacement()) + .placeholderReplacement(placeholderReplacement) // 表名配置 - .table(flywayProperties.getTable()) - // 模式配置 - .schemas(flywayProperties.getSchemas().toArray(new String[0])) + .table(table) .load(); log.info("Flyway配置完成:"); - log.info(" - 迁移脚本位置: {}", flywayProperties.getLocations()); - log.info(" - 基线版本: {}", flywayProperties.getBaselineVersion()); - log.info(" - 基线描述: {}", flywayProperties.getBaselineDescription()); - log.info(" - 验证迁移: {}", flywayProperties.isValidateOnMigrate()); - log.info(" - 禁用清理: {}", flywayProperties.isCleanDisabled()); - log.info(" - 编码: {}", flywayProperties.getEncoding()); + log.info(" - 迁移脚本位置: {}", locations); + log.info(" - 基线版本: {}", baselineVersion); + log.info(" - 基线描述: {}", baselineDescription); + log.info(" - 验证迁移: {}", validateOnMigrate); + log.info(" - 禁用清理: {}", cleanDisabled); + log.info(" - 编码: {}", encoding); return flyway; } -} \ No newline at end of file +} diff --git a/qaup-admin/src/main/resources/db/migration/V1.0.0__Initial_baseline.sql b/qaup-admin/src/main/resources/db/migration/V1.0.0__Initial_baseline.sql index 1fc661b5..659ff9ca 100644 --- a/qaup-admin/src/main/resources/db/migration/V1.0.0__Initial_baseline.sql +++ b/qaup-admin/src/main/resources/db/migration/V1.0.0__Initial_baseline.sql @@ -19,7 +19,7 @@ SET xmloption = content; SET client_min_messages = warning; SET row_security = off; -CREATE SCHEMA topology IF NOT EXISTS topology; +CREATE SCHEMA IF NOT EXISTS topology; COMMENT ON SCHEMA topology IS 'PostGIS Topology schema';