55 lines
1.2 KiB
SQL
55 lines
1.2 KiB
SQL
-- 修复卡住的任务(将长时间running的任务标记为失败)
|
||
|
||
-- 查看将要修复的任务
|
||
SELECT
|
||
id,
|
||
user_id,
|
||
task_type,
|
||
status,
|
||
created_at,
|
||
updated_at,
|
||
TIMESTAMPDIFF(MINUTE, updated_at, NOW()) as stuck_minutes,
|
||
JSON_EXTRACT(payload, '$.song_title') as song_title
|
||
FROM nf_generation_tasks
|
||
WHERE status = 'running'
|
||
AND TIMESTAMPDIFF(MINUTE, updated_at, NOW()) > 10
|
||
ORDER BY id;
|
||
|
||
-- 确认后执行以下语句修复
|
||
|
||
-- 方案1: 标记为失败(推荐)
|
||
UPDATE nf_generation_tasks
|
||
SET
|
||
status = 'failed',
|
||
error_msg = '任务处理超时,已自动标记为失败',
|
||
updated_at = NOW()
|
||
WHERE status = 'running'
|
||
AND TIMESTAMPDIFF(MINUTE, updated_at, NOW()) > 10;
|
||
|
||
-- 查看修复结果
|
||
SELECT
|
||
id,
|
||
status,
|
||
error_msg,
|
||
updated_at
|
||
FROM nf_generation_tasks
|
||
WHERE id IN (
|
||
SELECT id FROM (
|
||
SELECT id FROM nf_generation_tasks
|
||
WHERE error_msg LIKE '%超时%'
|
||
ORDER BY id DESC
|
||
LIMIT 10
|
||
) as tmp
|
||
);
|
||
|
||
-- 方案2: 重置为pending状态(让系统重试)
|
||
/*
|
||
UPDATE nf_generation_tasks
|
||
SET
|
||
status = 'pending',
|
||
error_msg = NULL,
|
||
updated_at = NOW()
|
||
WHERE status = 'running'
|
||
AND TIMESTAMPDIFF(MINUTE, updated_at, NOW()) > 10;
|
||
*/
|