guoyu/检查题库问题.sql

175 lines
5.1 KiB
MySQL
Raw Normal View History

2025-12-06 20:11:36 +08:00
-- 检查题库导入问题诊断SQL
-- 问题:在考试管理中无法看到新建的题库
-- ========================================
-- 第1步检查题库数据
-- ========================================
-- 1.1 查看所有题库及其创建者信息
SELECT
id AS ID,
bank_name AS ,
subject_name AS ,
question_count AS ,
create_user_id AS ID,
create_by AS ,
create_time AS
FROM study_question_bank
ORDER BY create_time DESC;
-- 1.2 检查哪些题库的 create_user_id 为空
SELECT
id AS ID,
bank_name AS ,
CASE
WHEN create_user_id IS NULL THEN '❌ create_user_id为空'
ELSE '✓ 有创建用户ID'
END AS ,
create_by AS ,
create_time AS
FROM study_question_bank
ORDER BY create_time DESC;
-- ========================================
-- 第2步检查用户信息
-- ========================================
-- 2.1 查看当前登录用户的ID需要在实际使用时替换
-- 从 sys_user 表查找你的用户ID
SELECT
user_id AS ID,
user_name AS ,
nick_name AS ,
create_time AS
FROM sys_user
WHERE user_name = 'admin' -- ⚠️ 替换为你的登录用户名
OR nick_name LIKE '%教师%';
-- ========================================
-- 第3步检查题库与用户的关联
-- ========================================
-- 3.1 检查题库是否关联到正确的用户
SELECT
b.id AS ID,
b.bank_name AS ,
b.create_user_id AS ID,
u.user_name AS ,
u.nick_name AS ,
CASE
WHEN b.create_user_id IS NULL THEN '❌ 未关联用户'
WHEN u.user_id IS NULL THEN '❌ 用户不存在'
ELSE '✓ 正常'
END AS
FROM study_question_bank b
LEFT JOIN sys_user u ON b.create_user_id = u.user_id
ORDER BY b.create_time DESC;
-- ========================================
-- 第4步检查题库中的题目
-- ========================================
-- 4.1 查看题库中是否有题目
SELECT
b.id AS ID,
b.bank_name AS ,
b.question_count AS ,
COUNT(i.id) AS ,
CASE
WHEN COUNT(i.id) = 0 THEN '❌ 题库为空'
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
ORDER BY b.create_time DESC;
-- 4.2 查看题目详情
SELECT
i.id AS ID,
i.bank_id AS ID,
b.bank_name AS ,
i.question_type AS ,
LEFT(i.question_content, 50) AS ,
i.create_time AS
FROM study_question_bank_item i
LEFT JOIN study_question_bank b ON i.bank_id = b.id
ORDER BY i.create_time DESC
LIMIT 20;
-- ========================================
-- 第5步修复方案根据诊断结果选择执行
-- ========================================
-- 方案A如果 create_user_id 为空,手动关联到当前用户
-- ⚠️ 执行前请先确认你的用户ID
-- 例如假设你的用户ID是 1admin通常是1
-- 查看需要修复的题库
SELECT
id AS ID,
bank_name AS ,
create_by AS
FROM study_question_bank
WHERE create_user_id IS NULL;
-- 修复:将 create_user_id 设置为当前用户ID
-- UPDATE study_question_bank
-- SET create_user_id = 1 -- ⚠️ 替换为你的用户ID
-- WHERE create_user_id IS NULL;
-- 方案B如果题库的 question_count 不准确,重新统计
UPDATE study_question_bank b
SET question_count = (
SELECT COUNT(*)
FROM study_question_bank_item i
WHERE i.bank_id = b.id
);
-- ========================================
-- 第6步验证修复结果
-- ========================================
-- 6.1 验证:模拟后端查询(当前用户的题库)
-- ⚠️ 将 1 替换为你的实际用户ID
SELECT
id AS ID,
bank_name AS ,
subject_name AS ,
question_count AS ,
create_time AS
FROM study_question_bank
WHERE create_user_id = 1 -- ⚠️ 替换为你的用户ID
ORDER BY create_time DESC;
-- 6.2 如果上面的查询有结果,说明修复成功
-- 刷新考试管理页面,应该能看到题库了
-- ========================================
-- 使用说明
-- ========================================
--
-- 1. 先执行第1-4步的诊断SQL查看问题原因
-- 2. 根据诊断结果选择执行第5步的修复SQL
-- 3. 执行第6步验证修复结果
-- 4. 刷新前端页面(考试管理 → 创建考试 → 选择题库)
--
-- 常见问题:
-- Q1: 题库列表为空
-- A1: create_user_id 为空执行方案A修复
--
-- Q2: 题库有题目但显示数量为0
-- A2: question_count 不准确执行方案B修复
--
-- Q3: 题库和题目都存在但考试管理中看不到
-- A3: create_user_id 与当前登录用户ID不匹配执行方案A修复
--