From ca733b7978474f6ad0cfa484d4685378f2710a45 Mon Sep 17 00:00:00 2001 From: chenyuan Date: Thu, 30 Jul 2026 13:39:01 +0800 Subject: [PATCH] fix: support mixed collation task backfill --- .../2026-07-30-backfill-school-default-tasks.sql | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/sql/2026-07-30-backfill-school-default-tasks.sql b/docs/sql/2026-07-30-backfill-school-default-tasks.sql index 08c13fa..9effd4c 100644 --- a/docs/sql/2026-07-30-backfill-school-default-tasks.sql +++ b/docs/sql/2026-07-30-backfill-school-default-tasks.sql @@ -12,14 +12,14 @@ CREATE TABLE IF NOT EXISTS school_default_task_initialization ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学校默认实训任务初始化状态'; INSERT INTO task_allocation (id, class_id, school_id, module, disabled_status, sort) -SELECT UUID(), CONCAT('SCHOOL_DEFAULT:', s.school_id), s.school_id, p.module, p.disabled_status, p.sort +SELECT UUID(), CONCAT('SCHOOL_DEFAULT:', CONVERT(s.school_id USING BINARY)), s.school_id, p.module, p.disabled_status, p.sort FROM school s -JOIN task_allocation p ON p.class_id = '999999999' -WHERE s.school_id <> '999999999' +JOIN task_allocation p ON BINARY p.class_id = BINARY '999999999' +WHERE BINARY s.school_id <> BINARY '999999999' AND NOT EXISTS ( SELECT 1 FROM task_allocation existing_task - WHERE existing_task.class_id = CONCAT('SCHOOL_DEFAULT:', s.school_id) + WHERE BINARY existing_task.class_id = BINARY CONCAT('SCHOOL_DEFAULT:', CONVERT(s.school_id USING BINARY)) ); INSERT INTO school_default_task_initialization ( @@ -27,14 +27,14 @@ INSERT INTO school_default_task_initialization ( ) SELECT s.school_id, 'READY', NULL, 1, NOW(), NOW() FROM school s -WHERE s.school_id <> '999999999' +WHERE BINARY s.school_id <> BINARY '999999999' AND EXISTS ( SELECT 1 FROM task_allocation default_task - WHERE default_task.class_id = CONCAT('SCHOOL_DEFAULT:', s.school_id) + WHERE BINARY default_task.class_id = BINARY CONCAT('SCHOOL_DEFAULT:', CONVERT(s.school_id USING BINARY)) ) ON DUPLICATE KEY UPDATE - status = IF(status = 'READY', status, 'READY'), + status = IF(school_default_task_initialization.status = 'READY', school_default_task_initialization.status, 'READY'), update_time = NOW(); COMMIT;