198 lines
5.0 KiB
MySQL
198 lines
5.0 KiB
MySQL
|
|
-- ========================================
|
|||
|
|
-- 修复题库导入问题
|
|||
|
|
-- 问题:考试管理中无法看到新建的题库
|
|||
|
|
-- 原因:题库的 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. 清除浏览器缓存并重新登录
|