4.8 KiB
4.8 KiB
题库导入问题解决方案
🔍 问题描述
在考试管理中创建考试时,选择"从题库抽取",但下拉框中看不到新建的题库和题目。
🎯 问题原因
考试管理页面调用的是 /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步:刷新前端页面
- 刷新浏览器
- 进入【考试管理】→【创建考试】
- 选择出题方式为【从题库抽取】
- 下拉框应该能看到题库了
📝 详细诊断脚本
我已经创建了两个SQL脚本:
检查题库问题.sql- 完整的诊断脚本修复题库导入问题.sql- 一步步的修复方案
请按顺序执行SQL语句,根据实际情况选择合适的修复方法。
⚠️ 注意事项
关键字段说明
| 字段 | 说明 | 重要性 |
|---|---|---|
create_user_id |
创建者的用户ID | ⭐⭐⭐ 必须有 |
create_by |
创建者的用户名 | 用于自动关联 |
question_count |
题目数量 | 如果不准确会影响显示 |
执行SQL的注意事项
- 备份数据:执行UPDATE前先备份数据库
- 确认用户ID:确保使用正确的用户ID
- 测试验证:修复后用验证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) - 浏览器控制台无错误
- 已清除浏览器缓存
调试方法
-
查看浏览器控制台
- 打开开发者工具 (F12)
- 查看 Network 标签
- 找到
/study/questionBank/my-banks请求 - 查看返回的数据是否为空
-
查看后端日志
Study-Vue-redis/ry-study-admin/logs/sys-info.log搜索 "my-banks" 或 "questionBank"
-
手动测试接口
# 使用 Postman 或浏览器访问 http://192.168.137.1:30091/study/questionBank/my-banks
📌 总结
根本原因:题库的 create_user_id 字段为空或不匹配
快速修复:运行 修复题库导入问题.sql 中的SQL
预防措施:后端代码已修复,新建题库会自动关联用户
如有任何问题,请查看SQL脚本中的详细说明或联系技术支持。