Bladeren bron

fix(db): 迁移278-313抽出独立方法 runSystemMigrations,避免被 sys_menu 空表条件静默跳过

根因:迁移278-313(含resource_items.connection_type/priority/value_score/last_interaction_at/interaction_count、health_report_drafts.file_hash等)错误地内嵌在 seedSysMenus() 内,而该方法仅在 sys_menu 表为空时才执行。生产环境 sys_menu 始终有数据,导致这些迁移从未运行,引发 Unknown column 运行时错误。

修复:将迁移278-313提取为独立方法 runSystemMigrations(),由 runMigrations() 无条件调用,确保每次启动都补齐生产库缺列。

生产库已手动 ALTER 补齐以下缺失列:
- resource_items: connection_type, priority, value_score, last_interaction_at, interaction_count
- health_report_drafts: file_hash
Xiaogang Liao 1 week geleden
bovenliggende
commit
14e746ba03
1 gewijzigde bestanden met toevoegingen van 7 en 0 verwijderingen
  1. 7 0
      cfc-backend/src/main/java/com/etotem/cfc/config/DatabaseInitializer.java

+ 7 - 0
cfc-backend/src/main/java/com/etotem/cfc/config/DatabaseInitializer.java

@@ -3273,6 +3273,7 @@ public class DatabaseInitializer implements CommandLineRunner {
             log.warn("迁移275失败: {}", e.getMessage());
         }
 
+        runSystemMigrations();
     }
 
     private void migrateHealthDimensionsTable() {
@@ -10224,6 +10225,12 @@ sqls.add("INSERT IGNORE INTO health_norm_reference (dimension, gender, age_min,
             log.warn("注册报告类型 gut_flora 失败:{}", e.getMessage());
         }
 
+        // 迁移278-313: 已移至独立方法 runSystemMigrations()(原误置于本方法仅空表触发)
+    }
+
+    // 迁移278-313: 系统级 DDL/数据迁移(原误置于 seedSysMenus 内,空表才执行,生产永远跳过)
+    // 抽出为独立方法,由 runMigrations() 无条件调用,确保生产库每次启动补齐。
+    private void runSystemMigrations() {
         // 迁移278: 创建 family_coupon 表 + family_coupon_grant_log 表
         // (优惠券全链路改为家庭维度:2026-08-31)
         try {