-- ======================================== -- 修复题库导入问题 -- 问题:考试管理中无法看到新建的题库 -- 原因:题库的 create_user_id 字段为空或不匹配 -- ======================================== -- 第1步:检查数据库表结构 -- ======================================== -- 检查 study_question_bank 表是否有 create_user_id 字段 SHOW COLUMNS FROM study_question_bank LIKE 'create_user_id'; -- 如果上面的查询没有结果,说明缺少字段,需要添加 -- 执行下面的 ALTER TABLE 语句: -- ALTER TABLE study_question_bank -- ADD COLUMN create_user_id BIGINT(20) NULL COMMENT '创建人ID(教师ID)' -- AFTER question_count; -- ======================================== -- 第2步:查找当前登录用户的ID -- ======================================== -- 方法1:查找admin用户 SELECT user_id, user_name, nick_name FROM sys_user WHERE user_name = 'admin'; -- 方法2:查找所有教师用户 SELECT user_id, user_name, nick_name FROM sys_user WHERE del_flag = '0' ORDER BY create_time; -- ⚠️ 记住你的用户ID,下面需要使用 -- ======================================== -- 第3步:诊断题库数据 -- ======================================== -- 3.1 查看所有题库 SELECT id, bank_name, question_count, create_user_id, create_by, create_time FROM study_question_bank ORDER BY create_time DESC; -- 3.2 找出 create_user_id 为空的题库 SELECT id, bank_name, question_count, create_by, create_time FROM study_question_bank WHERE create_user_id IS NULL ORDER BY create_time DESC; -- ======================================== -- 第4步:修复题库数据 -- ======================================== -- 方法A:根据 create_by 自动关联用户ID 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; -- 验证修复结果 SELECT b.id, b.bank_name, b.create_user_id, b.create_by, u.user_name, u.nick_name FROM study_question_bank b LEFT JOIN sys_user u ON b.create_user_id = u.user_id ORDER BY b.create_time DESC; -- 方法B:如果方法A没有成功,手动设置到你的用户ID -- ⚠️ 请将下面的 1 替换为你的实际用户ID(从第2步获取) -- 预览将要修改的题库 SELECT id, bank_name, create_by, '将设置 create_user_id = 1' AS 操作 FROM study_question_bank WHERE create_user_id IS NULL; -- 确认无误后,执行更新 -- UPDATE study_question_bank -- SET create_user_id = 1 -- ⚠️ 替换为你的用户ID -- WHERE create_user_id IS NULL; -- ======================================== -- 第5步:同步题目数量 -- ======================================== -- 重新统计每个题库的题目数量 UPDATE study_question_bank b SET question_count = ( SELECT COUNT(*) FROM study_question_bank_item i WHERE i.bank_id = b.id ); -- 验证 SELECT b.id, b.bank_name, b.question_count AS 记录的数量, COUNT(i.id) AS 实际数量, CASE WHEN b.question_count = COUNT(i.id) THEN '✓ 一致' ELSE '❌ 不一致' END AS 状态 FROM study_question_bank b LEFT JOIN study_question_bank_item i ON b.id = i.bank_id GROUP BY b.id, b.bank_name, b.question_count; -- ======================================== -- 第6步:验证修复 -- ======================================== -- 6.1 模拟后端查询:获取指定用户的题库 -- ⚠️ 将 1 替换为你的用户ID SELECT id, bank_name, subject_name, question_count, create_time FROM study_question_bank WHERE create_user_id = 1 -- ⚠️ 替换为你的用户ID ORDER BY create_time DESC; -- 如果上面的查询有结果,说明修复成功! -- ======================================== -- 第7步:测试完整流程 -- ======================================== -- 7.1 创建一个测试题库(确保字段完整) -- INSERT INTO study_question_bank ( -- bank_name, -- subject_id, -- subject_name, -- description, -- question_count, -- create_user_id, -- 重要! -- create_by, -- create_time -- ) VALUES ( -- '测试题库', -- 1, -- '数学', -- '测试用题库', -- 0, -- 1, -- ⚠️ 你的用户ID -- 'admin', -- ⚠️ 你的用户名 -- NOW() -- ); -- 7.2 查询刚创建的题库 SELECT * FROM study_question_bank WHERE bank_name = '测试题库'; -- ======================================== -- 完成! -- ======================================== -- -- 现在执行以下操作: -- 1. ✓ 刷新后台管理页面 -- 2. ✓ 进入【考试管理】→【创建考试】 -- 3. ✓ 选择出题方式为【从题库抽取】 -- 4. ✓ 下拉框应该能看到你的题库了 -- -- 如果仍然看不到: -- 1. 检查浏览器控制台是否有错误 -- 2. 检查后端日志 (/study/questionBank/my-banks 接口) -- 3. 确认当前登录用户ID与题库的 create_user_id 一致 -- 4. 清除浏览器缓存并重新登录