guoyu/Test/md/题库导入问题说明.md

4.8 KiB
Raw Blame History

题库导入问题解决方案

🔍 问题描述

考试管理中创建考试时,选择"从题库抽取",但下拉框中看不到新建的题库和题目

🎯 问题原因

考试管理页面调用的是 /study/questionBank/my-banks 接口,这个接口只返回当前登录用户创建的题库,查询条件是:

WHERE b.create_user_id = #{当前用户ID}

如果题库的 create_user_id 字段为或与当前用户ID不匹配,就会导致题库不显示。

📊 可能的情况

情况1数据库缺少字段

数据库表 study_question_bank 缺少 create_user_id 字段。

情况2字段值为空

题库存在,但 create_user_id 字段为 NULL

情况3用户ID不匹配

题库的 create_user_id 与当前登录用户的ID不一致。

🔧 快速修复步骤

第1步打开数据库客户端

使用 Navicat、DataGrip 或命令行连接到数据库。

第2步检查表结构

SHOW COLUMNS FROM study_question_bank LIKE 'create_user_id';

如果没有结果,说明缺少字段,执行:

ALTER TABLE study_question_bank 
ADD COLUMN create_user_id BIGINT(20) NULL COMMENT '创建人ID教师ID' 
AFTER question_count;

第3步查找你的用户ID

SELECT user_id, user_name, nick_name 
FROM sys_user 
WHERE user_name = 'admin';  -- 替换为你的登录用户名

记住返回的 user_id,例如:1

第4步自动修复题库关联

-- 方法A根据创建者用户名自动关联
UPDATE study_question_bank b
INNER JOIN sys_user u ON b.create_by = u.user_name
SET b.create_user_id = u.user_id
WHERE b.create_user_id IS NULL;

或者手动设置:

-- 方法B手动设置为你的用户ID
UPDATE study_question_bank 
SET create_user_id = 1  -- ⚠️ 替换为你的实际用户ID
WHERE create_user_id IS NULL;

第5步验证修复

-- 查询你的题库替换用户ID
SELECT 
    id,
    bank_name,
    subject_name,
    question_count,
    create_user_id,
    create_time
FROM study_question_bank
WHERE create_user_id = 1  -- ⚠️ 替换为你的用户ID
ORDER BY create_time DESC;

如果有结果,说明修复成功!

第6步刷新前端页面

  1. 刷新浏览器
  2. 进入【考试管理】→【创建考试】
  3. 选择出题方式为【从题库抽取】
  4. 下拉框应该能看到题库了

📝 详细诊断脚本

我已经创建了两个SQL脚本

  1. 检查题库问题.sql - 完整的诊断脚本
  2. 修复题库导入问题.sql - 一步步的修复方案

请按顺序执行SQL语句根据实际情况选择合适的修复方法。

⚠️ 注意事项

关键字段说明

字段 说明 重要性
create_user_id 创建者的用户ID 必须有
create_by 创建者的用户名 用于自动关联
question_count 题目数量 如果不准确会影响显示

执行SQL的注意事项

  1. 备份数据执行UPDATE前先备份数据库
  2. 确认用户ID确保使用正确的用户ID
  3. 测试验证修复后用验证SQL确认结果

🚀 预防措施

后端代码已修复

Controller 中新增题库时会自动设置 create_user_id

@PostMapping
public AjaxResult add(@RequestBody StudyQuestionBank questionBank) {
    questionBank.setCreateBy(getUsername());
    questionBank.setCreateUserId(getUserId());  // ✓ 已添加
    return toAjax(questionBankService.insertQuestionBank(questionBank));
}

今后创建题库

后端代码已经修复,今后新建的题库会自动关联用户ID,不会再出现这个问题。

🆘 如果仍然无法解决

检查清单

  • 数据库表有 create_user_id 字段
  • 题库的 create_user_id 不为空
  • 题库的 create_user_id 与当前登录用户ID一致
  • 题库中有题目(question_count > 0
  • 浏览器控制台无错误
  • 已清除浏览器缓存

调试方法

  1. 查看浏览器控制台

    • 打开开发者工具 (F12)
    • 查看 Network 标签
    • 找到 /study/questionBank/my-banks 请求
    • 查看返回的数据是否为空
  2. 查看后端日志

    Study-Vue-redis/ry-study-admin/logs/sys-info.log
    

    搜索 "my-banks" 或 "questionBank"

  3. 手动测试接口

    # 使用 Postman 或浏览器访问
    http://192.168.137.1:30091/study/questionBank/my-banks
    

📌 总结

根本原因:题库的 create_user_id 字段为空或不匹配

快速修复:运行 修复题库导入问题.sql 中的SQL

预防措施:后端代码已修复,新建题库会自动关联用户


如有任何问题请查看SQL脚本中的详细说明或联系技术支持。