fix: support mixed collation task backfill

main
chenyuan 1 month ago
parent 0296e6c743
commit ca733b7978

@ -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;

Loading…
Cancel
Save