guoyu/修复题库导入问题.sql

198 lines
5.0 KiB
MySQL
Raw Normal View History

2025-12-06 20:11:36 +08:00
-- ========================================
-- 修复题库导入问题
-- 问题:考试管理中无法看到新建的题库
-- 原因:题库的 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. 清除浏览器缓存并重新登录