175 lines
5.1 KiB
MySQL
175 lines
5.1 KiB
MySQL
|
|
-- 检查题库导入问题诊断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是 1(admin通常是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修复
|
|||
|
|
--
|