guoyu/Study-Vue-redis/database_check_and_restore.sql

72 lines
2.7 KiB
MySQL
Raw Normal View History

2025-12-03 18:58:36 +08:00
-- ============================================
-- 检查和恢复学员数据的SQL脚本
-- ============================================
-- 步骤1查看当前所有学员的数据检查哪些数据丢失了
SELECT
user_id AS '信息编号',
user_name AS '账号',
nick_name AS '罪犯姓名',
sex AS '性别',
prison_name AS '监狱',
prison_area AS '监区',
ethnicity AS '民族',
education_level AS '文化程度',
crime_name AS '罪名',
sentence_term AS '刑期',
sentence_start_date AS '刑期起日',
sentence_end_date AS '刑期止日',
entry_date AS '入监时间',
student_status AS '学员状态',
remark AS '备注'
FROM sys_user
WHERE remark LIKE '%注册类型:student%'
AND del_flag = '0'
ORDER BY user_id;
-- 步骤2查看最近的操作日志可能包含更新前的数据
-- 查询最近修改用户的操作日志
SELECT
oper_id AS '日志ID',
oper_time AS '操作时间',
oper_name AS '操作人',
oper_param AS '请求参数',
json_result AS '返回结果(更新后的数据)'
FROM sys_oper_log
WHERE title = '用户管理'
AND business_type = 2 -- 2表示修改操作
AND oper_time >= DATE_SUB(NOW(), INTERVAL 2 DAY) -- 最近2天的操作
ORDER BY oper_time DESC
LIMIT 100;
-- 步骤3如果有备份请先恢复备份
-- 如果没有备份,需要手动恢复数据
-- 步骤4手动恢复数据的示例SQL请根据实际情况修改
-- 以下是一个示例,请根据您的实际数据修改:
-- 示例恢复某个学员的数据请根据实际情况修改user_id和数据
-- UPDATE sys_user
-- SET
-- prison_name = '第一监狱', -- 请根据实际情况修改
-- prison_area = '一监区', -- 请根据实际情况修改
-- ethnicity = '汉族', -- 请根据实际情况修改
-- education_level = '初中', -- 请根据实际情况修改
-- crime_name = '盗窃罪', -- 请根据实际情况修改
-- sentence_term = 3, -- 请根据实际情况修改
-- sentence_start_date = '2023-01-01', -- 请根据实际情况修改
-- sentence_end_date = '2026-01-01', -- 请根据实际情况修改
-- entry_date = '2023-01-15', -- 请根据实际情况修改
-- student_status = 'incarcerated' -- 设置为在押状态
-- WHERE user_id = 110; -- 替换为实际的user_id
-- 步骤5批量恢复多个学员的数据如果有相同的模式
-- 例如,如果多个学员都是从"第一监狱"的"一监区",可以批量恢复:
-- UPDATE sys_user
-- SET prison_name = '第一监狱',
-- prison_area = '一监区'
-- WHERE remark LIKE '%注册类型:student%'
-- AND del_flag = '0'
-- AND (prison_name IS NULL OR prison_name = '');