-- ============================================================ -- 线上库 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;