فهرست منبع

fix(backend): DatabaseInitializer 添加 family_member_id 和 role_override 列迁移

为 tasks 表和 family_members 表添加缺失的列,修复运行时 Unknown column 错误

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
User 2 ماه پیش
والد
کامیت
fd1fa07623
1فایلهای تغییر یافته به همراه30 افزوده شده و 0 حذف شده
  1. 30 0
      cfc-backend/src/main/java/com/etotem/cfc/config/DatabaseInitializer.java

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

@@ -2016,6 +2016,36 @@ log.info("已添加template_id列到tasks表");
             log.warn("检查/添加 users 表 show_to_family 列失败: {}", e.getMessage());
         }
 
+        // 迁移: tasks 表添加 family_member_id 列(FamilyMember 迁移)
+        try {
+            Integer colExists = jdbcTemplate.queryForObject(
+                "SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'tasks' AND COLUMN_NAME = 'family_member_id'",
+                Integer.class);
+            if (colExists == null || colExists == 0) {
+                jdbcTemplate.execute("ALTER TABLE tasks ADD COLUMN family_member_id BIGINT COMMENT '家庭成员ID(关联 family_members.id)'");
+                log.info("已为 tasks 表添加 family_member_id 列");
+            } else {
+                log.info("tasks 表 family_member_id 列已存在,跳过");
+            }
+        } catch (Exception e) {
+            log.warn("检查/添加 tasks 表 family_member_id 列失败: {}", e.getMessage());
+        }
+
+        // 迁移: family_members 表添加 role_override 列(FamilyMember 迁移)
+        try {
+            Integer colExists = jdbcTemplate.queryForObject(
+                "SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'family_members' AND COLUMN_NAME = 'role_override'",
+                Integer.class);
+            if (colExists == null || colExists == 0) {
+                jdbcTemplate.execute("ALTER TABLE family_members ADD COLUMN role_override VARCHAR(20) DEFAULT 'auto' COMMENT '角色覆盖: auto/parent/child/elderly,空=auto'");
+                log.info("已为 family_members 表添加 role_override 列");
+            } else {
+                log.info("family_members 表 role_override 列已存在,跳过");
+            }
+        } catch (Exception e) {
+            log.warn("检查/添加 family_members 表 role_override 列失败: {}", e.getMessage());
+        }
+
         // ==================== DanShop 电商模块建表 ====================
         // 1. danshop_categories (商品分类表)
         try {