guoyu/修复题库导入问题.sql
2025-12-06 20:11:36 +08:00

198 lines
5.0 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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