我有一个程序可以杀死事件调度程序中的休眠线程。 它工作正常,但有时会抛出警告 比如没有处理过的行,没有数据被提取,零行被提取(错误号1329),也有一段时间显示,未知 线程(错误号1904)。即使我在代码中处理它。对于1904年之后的错误 cursor获取所有ID,而处理某些线程可能会丢失,因此会抛出该错误。 我正在使用MYSQL DB
CREATE PROCEDURE `kill_thread`()
BEGIN
DECLARE no_more_rows BOOLEAN;
DECLARE loop_cntr INT DEFAULT 0;
DECLARE num_rows INT DEFAULT 0;
DECLARE XID bigint(4);
DECLARE Sleep_Cur CURSOR FOR
SELECT ID
FROM information_schema.PROCESSLIST P
WHERE P.COMMAND='Sleep' AND P.TIME >20;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET no_more_rows = TRUE;
OPEN Sleep_Cur;
select FOUND_ROWS() into num_rows;
the_loop: LOOP
FETCH Sleep_Cur
INTO XID;
IF no_more_rows THEN
CLOSE Sleep_Cur;
LEAVE the_loop;
END IF;
SET @slp_sql= CONCAT("KILL ",XID);
PREPARE stmt FROM @slp_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET loop_cntr = loop_cntr + 1;
END LOOP the_loop;
END
请建议代码的可能修复,因为它正在记录到日志文件中。 感谢