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