| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- -- ============================================================
- -- 线上库 schema 补齐脚本(2026-08-31)
- -- 背景:线上已部署新代码(含 question_count / practiceProgress 功能),
- -- 但线上库 schema 落后,缺列缺表导致多个接口 500。
- -- 用法:先把本文件上传到服务器 /root/,然后执行:
- -- docker exec -i mysql8 mysql -uuser -p'qPa5*gt8o.' zhijiayun_pharmacy < /root/fix-prod-schema.sql
- -- 说明:
- -- - 第 1 条 ALTER 若报 "Duplicate column name 'question_count'",说明列已加过,
- -- 属正常现象,忽略即可(用 -f 或继续执行后续语句)。
- -- - CREATE TABLE IF NOT EXISTS 可安全重复执行。
- -- ============================================================
- -- 1) 考试记录表:满分列(realExam/list、records、summary、recordDetail 等接口依赖)
- ALTER TABLE t_quiz_user_exam_record
- ADD COLUMN question_count INT DEFAULT NULL COMMENT '试卷题目总数(满分)' AFTER wrong_count;
- -- 2) 练习进度表(practiceProgress/listBySectionIds、save、get 接口依赖)
- CREATE TABLE IF NOT EXISTS t_quiz_practice_progress (
- id bigint NOT NULL COMMENT '主键ID(雪花算法)',
- user_id bigint NOT NULL COMMENT '用户ID',
- subject_id bigint DEFAULT NULL COMMENT '科目ID',
- section_id bigint NOT NULL COMMENT '节ID',
- section_name varchar(200) DEFAULT NULL COMMENT '节名称',
- current_index int NOT NULL DEFAULT 0 COMMENT '当前题号(0基)',
- answered_count int NOT NULL DEFAULT 0 COMMENT '已答题数',
- answers text COMMENT '已选答案JSON {index:答案}',
- create_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- update_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- PRIMARY KEY (id),
- UNIQUE KEY uk_user_section (user_id, section_id),
- KEY idx_user_id (user_id)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='练习进度表';
- -- 3) 回填存量考试记录的满分值
- UPDATE t_quiz_user_exam_record r
- SET r.question_count = (
- SELECT COUNT(*) FROM t_quiz_question q
- WHERE q.is_real = 1 AND q.year = r.year
- AND (r.subject_id IS NULL OR q.subject_id = r.subject_id)
- )
- WHERE r.question_count IS NULL;
|