v2.3修复
This commit is contained in:
@@ -297,12 +297,12 @@ async def _execute_sql_content(cursor, sql_content: str):
|
|||||||
current_block = []
|
current_block = []
|
||||||
continue
|
continue
|
||||||
elif stripped.upper() == 'DELIMITER ;':
|
elif stripped.upper() == 'DELIMITER ;':
|
||||||
# 执行累积的存储过程块
|
# 执行缓冲区中剩余的存储过程
|
||||||
if current_block:
|
if current_block:
|
||||||
proc_sql = '\n'.join(current_block).strip()
|
proc_sql = '\n'.join(current_block).strip()
|
||||||
if proc_sql:
|
if proc_sql:
|
||||||
# 移除存储过程结尾的 $$ 定界符(发送给 MySQL 服务器时不需要)
|
|
||||||
proc_sql = re.sub(r'\$\$\s*$', '', proc_sql)
|
proc_sql = re.sub(r'\$\$\s*$', '', proc_sql)
|
||||||
|
if proc_sql:
|
||||||
await cursor.execute(proc_sql)
|
await cursor.execute(proc_sql)
|
||||||
in_procedure = False
|
in_procedure = False
|
||||||
current_block = []
|
current_block = []
|
||||||
@@ -313,6 +313,15 @@ async def _execute_sql_content(cursor, sql_content: str):
|
|||||||
|
|
||||||
if in_procedure:
|
if in_procedure:
|
||||||
current_block.append(line)
|
current_block.append(line)
|
||||||
|
# 遇到 $$ 结尾的行,说明一个存储过程定义结束,立即执行
|
||||||
|
if stripped.endswith('$$'):
|
||||||
|
proc_sql = '\n'.join(current_block).strip()
|
||||||
|
if proc_sql:
|
||||||
|
# 移除结尾的 $$ 定界符
|
||||||
|
proc_sql = re.sub(r'\$\$\s*$', '', proc_sql)
|
||||||
|
if proc_sql:
|
||||||
|
await cursor.execute(proc_sql)
|
||||||
|
current_block = []
|
||||||
else:
|
else:
|
||||||
# 普通SQL,按完整语句分割(以分号结尾)
|
# 普通SQL,按完整语句分割(以分号结尾)
|
||||||
if stripped:
|
if stripped:
|
||||||
|
|||||||
@@ -3,10 +3,13 @@
|
|||||||
-- 主要内容:添加缺失的数据库索引,优化查询性能
|
-- 主要内容:添加缺失的数据库索引,优化查询性能
|
||||||
-- ===========================================
|
-- ===========================================
|
||||||
|
|
||||||
DELIMITER $$
|
-- ===========================================
|
||||||
|
-- 升级步骤 1: conduct_records 表添加 student_id + created_at 联合索引
|
||||||
|
-- ===========================================
|
||||||
|
|
||||||
-- conduct_records 表:添加 student_id + created_at 联合索引(学生端查询历史记录)
|
DROP PROCEDURE IF EXISTS `upgrade_add_conduct_student_created_idx`;
|
||||||
CREATE PROCEDURE upgrade_add_conduct_student_created_idx()
|
DELIMITER $$
|
||||||
|
CREATE PROCEDURE `upgrade_add_conduct_student_created_idx`()
|
||||||
BEGIN
|
BEGIN
|
||||||
IF NOT EXISTS (
|
IF NOT EXISTS (
|
||||||
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
|
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
|
||||||
@@ -17,9 +20,18 @@ BEGIN
|
|||||||
ALTER TABLE `conduct_records` ADD INDEX `idx_student_created` (`student_id`, `created_at`);
|
ALTER TABLE `conduct_records` ADD INDEX `idx_student_created` (`student_id`, `created_at`);
|
||||||
END IF;
|
END IF;
|
||||||
END$$
|
END$$
|
||||||
|
DELIMITER ;
|
||||||
|
|
||||||
-- conduct_records 表:添加 recorder_id 索引(班干查询自己记录的)
|
CALL `upgrade_add_conduct_student_created_idx`();
|
||||||
CREATE PROCEDURE upgrade_add_conduct_recorder_idx()
|
DROP PROCEDURE IF EXISTS `upgrade_add_conduct_student_created_idx`;
|
||||||
|
|
||||||
|
-- ===========================================
|
||||||
|
-- 升级步骤 2: conduct_records 表添加 recorder_id 索引
|
||||||
|
-- ===========================================
|
||||||
|
|
||||||
|
DROP PROCEDURE IF EXISTS `upgrade_add_conduct_recorder_idx`;
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE PROCEDURE `upgrade_add_conduct_recorder_idx`()
|
||||||
BEGIN
|
BEGIN
|
||||||
IF NOT EXISTS (
|
IF NOT EXISTS (
|
||||||
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
|
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
|
||||||
@@ -30,9 +42,18 @@ BEGIN
|
|||||||
ALTER TABLE `conduct_records` ADD INDEX `idx_recorder_id` (`recorder_id`);
|
ALTER TABLE `conduct_records` ADD INDEX `idx_recorder_id` (`recorder_id`);
|
||||||
END IF;
|
END IF;
|
||||||
END$$
|
END$$
|
||||||
|
DELIMITER ;
|
||||||
|
|
||||||
-- attendance_records 表:添加 date 索引(按日期查询考勤记录)
|
CALL `upgrade_add_conduct_recorder_idx`();
|
||||||
CREATE PROCEDURE upgrade_add_attendance_date_idx()
|
DROP PROCEDURE IF EXISTS `upgrade_add_conduct_recorder_idx`;
|
||||||
|
|
||||||
|
-- ===========================================
|
||||||
|
-- 升级步骤 3: attendance_records 表添加 date 索引
|
||||||
|
-- ===========================================
|
||||||
|
|
||||||
|
DROP PROCEDURE IF EXISTS `upgrade_add_attendance_date_idx`;
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE PROCEDURE `upgrade_add_attendance_date_idx`()
|
||||||
BEGIN
|
BEGIN
|
||||||
IF NOT EXISTS (
|
IF NOT EXISTS (
|
||||||
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
|
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
|
||||||
@@ -43,9 +64,18 @@ BEGIN
|
|||||||
ALTER TABLE `attendance_records` ADD INDEX `idx_date` (`date`);
|
ALTER TABLE `attendance_records` ADD INDEX `idx_date` (`date`);
|
||||||
END IF;
|
END IF;
|
||||||
END$$
|
END$$
|
||||||
|
DELIMITER ;
|
||||||
|
|
||||||
-- login_logs 表:添加 username + created_at 联合索引(查询登录历史)
|
CALL `upgrade_add_attendance_date_idx`();
|
||||||
CREATE PROCEDURE upgrade_add_login_username_created_idx()
|
DROP PROCEDURE IF EXISTS `upgrade_add_attendance_date_idx`;
|
||||||
|
|
||||||
|
-- ===========================================
|
||||||
|
-- 升级步骤 4: login_logs 表添加 username + created_at 联合索引
|
||||||
|
-- ===========================================
|
||||||
|
|
||||||
|
DROP PROCEDURE IF EXISTS `upgrade_add_login_username_created_idx`;
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE PROCEDURE `upgrade_add_login_username_created_idx`()
|
||||||
BEGIN
|
BEGIN
|
||||||
IF NOT EXISTS (
|
IF NOT EXISTS (
|
||||||
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
|
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
|
||||||
@@ -56,9 +86,18 @@ BEGIN
|
|||||||
ALTER TABLE `login_logs` ADD INDEX `idx_username_created` (`username`, `created_at`);
|
ALTER TABLE `login_logs` ADD INDEX `idx_username_created` (`username`, `created_at`);
|
||||||
END IF;
|
END IF;
|
||||||
END$$
|
END$$
|
||||||
|
DELIMITER ;
|
||||||
|
|
||||||
-- operation_logs 表:添加 operator_id + created_at 联合索引(查询操作历史)
|
CALL `upgrade_add_login_username_created_idx`();
|
||||||
CREATE PROCEDURE upgrade_add_operation_operator_created_idx()
|
DROP PROCEDURE IF EXISTS `upgrade_add_login_username_created_idx`;
|
||||||
|
|
||||||
|
-- ===========================================
|
||||||
|
-- 升级步骤 5: operation_logs 表添加 operator_id + created_at 联合索引
|
||||||
|
-- ===========================================
|
||||||
|
|
||||||
|
DROP PROCEDURE IF EXISTS `upgrade_add_operation_operator_created_idx`;
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE PROCEDURE `upgrade_add_operation_operator_created_idx`()
|
||||||
BEGIN
|
BEGIN
|
||||||
IF NOT EXISTS (
|
IF NOT EXISTS (
|
||||||
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
|
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
|
||||||
@@ -69,9 +108,18 @@ BEGIN
|
|||||||
ALTER TABLE `operation_logs` ADD INDEX `idx_operator_created` (`operator_id`, `created_at`);
|
ALTER TABLE `operation_logs` ADD INDEX `idx_operator_created` (`operator_id`, `created_at`);
|
||||||
END IF;
|
END IF;
|
||||||
END$$
|
END$$
|
||||||
|
DELIMITER ;
|
||||||
|
|
||||||
-- semester_archives 表:添加 semester_id 索引(查询学期归档数据)
|
CALL `upgrade_add_operation_operator_created_idx`();
|
||||||
CREATE PROCEDURE upgrade_add_archive_semester_idx()
|
DROP PROCEDURE IF EXISTS `upgrade_add_operation_operator_created_idx`;
|
||||||
|
|
||||||
|
-- ===========================================
|
||||||
|
-- 升级步骤 6: semester_archives 表添加 semester_id 索引
|
||||||
|
-- ===========================================
|
||||||
|
|
||||||
|
DROP PROCEDURE IF EXISTS `upgrade_add_archive_semester_idx`;
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE PROCEDURE `upgrade_add_archive_semester_idx`()
|
||||||
BEGIN
|
BEGIN
|
||||||
IF NOT EXISTS (
|
IF NOT EXISTS (
|
||||||
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
|
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
|
||||||
@@ -82,21 +130,7 @@ BEGIN
|
|||||||
ALTER TABLE `semester_archives` ADD INDEX `idx_semester_id` (`semester_id`);
|
ALTER TABLE `semester_archives` ADD INDEX `idx_semester_id` (`semester_id`);
|
||||||
END IF;
|
END IF;
|
||||||
END$$
|
END$$
|
||||||
|
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
||||||
-- 执行所有升级存储过程
|
CALL `upgrade_add_archive_semester_idx`();
|
||||||
CALL upgrade_add_conduct_student_created_idx();
|
DROP PROCEDURE IF EXISTS `upgrade_add_archive_semester_idx`;
|
||||||
CALL upgrade_add_conduct_recorder_idx();
|
|
||||||
CALL upgrade_add_attendance_date_idx();
|
|
||||||
CALL upgrade_add_login_username_created_idx();
|
|
||||||
CALL upgrade_add_operation_operator_created_idx();
|
|
||||||
CALL upgrade_add_archive_semester_idx();
|
|
||||||
|
|
||||||
-- 清理存储过程
|
|
||||||
DROP PROCEDURE IF EXISTS upgrade_add_conduct_student_created_idx;
|
|
||||||
DROP PROCEDURE IF EXISTS upgrade_add_conduct_recorder_idx;
|
|
||||||
DROP PROCEDURE IF EXISTS upgrade_add_attendance_date_idx;
|
|
||||||
DROP PROCEDURE IF EXISTS upgrade_add_login_username_created_idx;
|
|
||||||
DROP PROCEDURE IF EXISTS upgrade_add_operation_operator_created_idx;
|
|
||||||
DROP PROCEDURE IF EXISTS upgrade_add_archive_semester_idx;
|
|
||||||
|
|||||||
Reference in New Issue
Block a user