Răsfoiți Sursa

fix(db): 迁移192 verification_codes.type 添加默认值

- 修复 Field 'type' doesn't have a default value 错误
- 旧版 INSERT 未携带 type 字段,DB 列 NOT NULL 无默认值导致插入失败
- 使用 MODIFY COLUMN 添加 DEFAULT 'login'(向后兼容,无需改代码)
- 直连生产 DB ALTER 已执行(下次服务重启 DBI 迁移幂等跳过)
Xiaogang Liao 1 lună în urmă
părinte
comite
eddb6df36a

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

@@ -8288,5 +8288,13 @@ private void runMigration100() {
 		// 迁移191: foods 添加 report_id/score 列(Food 实体已含字段,生产库缺列导致 Unknown column 'report_id' 错误)
 		ensureColumn("foods", "report_id", "BIGINT DEFAULT NULL COMMENT '关联报告ID(从PDF解析的食物推荐)'");
 		ensureColumn("foods", "score", "INT DEFAULT NULL COMMENT '食物评分'");
+
+		// 迁移192: verification_codes.type 添加默认值(旧版插入未携带 type 字段,DB 列 NOT NULL 无默认值导致报错)
+		try {
+			jdbcTemplate.execute("ALTER TABLE verification_codes MODIFY COLUMN `type` VARCHAR(20) NOT NULL DEFAULT 'login' COMMENT '验证码类型: login/register/reset'");
+			log.info("已为verification_codes.type添加默认值");
+		} catch (Exception e) {
+			log.warn("verification_codes.type 默认值修改失败(可能已修改): " + e.getMessage());
+		}
 	}
 }

+ 1 - 1
cfc-backend/src/main/resources/schema.sql

@@ -748,7 +748,7 @@ CREATE TABLE IF NOT EXISTS verification_codes (
     id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
     phone VARCHAR(11) NOT NULL COMMENT '手机号',
     code VARCHAR(6) NOT NULL COMMENT '验证码',
-    type VARCHAR(20) NOT NULL COMMENT '验证码类型',
+    type VARCHAR(20) NOT NULL DEFAULT 'login' COMMENT '验证码类型: login/register/reset',
     expires_in INT DEFAULT 300 COMMENT '过期时间(秒)',
     created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     expires_at DATETIME NOT NULL COMMENT '过期时间',