누군가이 SP에 어떤 문제가 있는지 말해 줄 수 있습니까? 논리는 괜찮은 것 같지만 테이블에서 다시 확인해도 전혀 작동하지 않습니다.mysql 저장 프로 시저가 이벤트 스케줄러에서 실행되지 않음
DELIMITER //
DROP PROCEDURE IF EXISTS add_zero_yearly_sales_proc //
CREATE PROCEDURE add_zero_yearly_sales_proc()
READS SQL DATA
BEGIN
DECLARE num_of_sales INT DEFAULT 0;
DECLARE last_ins_date DATETIME;
DECLARE done INT DEFAULT 0;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
SET last_ins_date = DATE_SUB(NOW(), INTERVAL 2 YEAR);
ins_loop: WHILE last_ins_date < NOW() DO
SELECT COUNT(sales_amount_sold) INTO num_of_sales
FROM yearly_sales
WHERE sales_date_sold BETWEEN DATE_FORMAT(last_ins_date,'%Y-%m-01 00:00:01') AND DATE_FORMAT(LAST_DAY(last_ins_date),'%Y-%m-%d 23:59:59');
IF num_of_sales = 0 THEN
INSERT INTO yearly_sales(sales_date_sold, sales_amount_sold,sales_quantity)
VALUES (CONCAT(DATE_FORMAT(last_ins_date,'%Y-%m-01 00:00:01')),0, 0);
END IF ;
SET num_of_sales = 0;
SET last_ins_date = DATE_ADD(last_ins_date, INTERVAL 1 MONTH);
END WHILE ins_loop;
SET done = 0;
END ;//
DELIMITER ;
이 절차를 호출하는 데 매 시간마다 발생하는 이벤트를 만들었습니다. 이 절차에서는 salesly 값이없는 yearly_sales 테이블에 개월이 있는지 확인하고 금액이 & 인 0 개의 값과 날짜의 월 초를 추가합니다. 내가 다시 확인했지만 작동하지 않는 것 같습니다.
또한 여기에 내가 많이 파고하지 않고 여기에 추측을 가지고있어 시간당
DELIMITER //
CREATE
EVENT `hourly_sales_evt`
ON SCHEDULE EVERY 1 HOUR STARTS DATE_FORMAT(NOW(),'%Y-%m-%d %H:55:00')
ON COMPLETION PRESERVE
DO BEGIN
CALL add_zero_yearly_sales_proc();
END //
DELIMITER ;
코드는이 – goonerify
가 수동으로 절차를 호출 봤어 이번 달에 도달 할 때까지 각 달 2 년 전으로 거슬러 가서 검색하도록되어? 그것이하는 일을합니까? 즉, 이벤트 스케줄러 또는 프로 시저 자체에 문제가 있습니까? – eggyal
오 마이! 그것은 수동으로 호출 할 때 작동합니다. 총격 사건이 아닌 것처럼 보입니다. 감사합니다. – goonerify