修复卡住的队列任务.sql 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. -- 修复卡在"处理中"状态的任务
  2. -- 这些任务可能因为异常导致status=1但没有继续处理
  3. -- 1. 查看所有卡住的任务(处理中且超过5分钟的)
  4. SELECT id, mobile_phone, integral_value, status, retry_count,
  5. FROM_UNIXTIME(createtime) as create_time,
  6. FROM_UNIXTIME(updatetime) as update_time,
  7. error_msg
  8. FROM icbc_queue
  9. WHERE status = 1
  10. AND updatetime < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 5 MINUTE))
  11. ORDER BY id DESC;
  12. -- 2. 将这些卡住的任务重置为待处理状态
  13. UPDATE icbc_queue
  14. SET status = 0,
  15. error_msg = '任务处理超时,已重置为待处理'
  16. WHERE status = 1
  17. AND updatetime < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 5 MINUTE));
  18. -- 3. 查看所有待处理的任务
  19. SELECT id, mobile_phone, integral_value, status, retry_count,
  20. FROM_UNIXTIME(createtime) as create_time,
  21. error_msg
  22. FROM icbc_queue
  23. WHERE status = 0
  24. ORDER BY id DESC
  25. LIMIT 20;
  26. -- 4. 查看所有失败的任务(重试3次后仍失败)
  27. SELECT id, mobile_phone, integral_value, status, retry_count,
  28. FROM_UNIXTIME(createtime) as create_time,
  29. error_msg, result
  30. FROM icbc_queue
  31. WHERE status = 3
  32. ORDER BY id DESC
  33. LIMIT 20;
  34. -- 5. 如果要重试失败的任务,将status=3改为0
  35. -- UPDATE icbc_queue SET status = 0, retry_count = 0 WHERE status = 3;