2015-05-08 21 views
0

我已經創建了事件記錄爲root用戶和GLOBAL event_schedulerON 我的事件過程的查詢是:MySQL事件不按照計劃執行任務?

DELIMITER $$ 

CREATE 
    EVENT `near_end_warranty` 
    ON SCHEDULE EVERY 1 HOUR 
    DO BEGIN 

     DECLARE numrow int; 
     SELECT COUNT(id) FROM equipments WHERE TIMESTAMPDIFF(WEEK,NOW(),warranty_end_date)<5 AND TIMESTAMPDIFF(WEEK,NOW(),warranty_end_date)>0 INTO numrow; 

     IF numrow>0 THEN 
     INSERT INTO notifications (eq_id,start_date,end_date,name,type,message,created_by,modified_by,created_on,modified_on) 
     SELECT eq_id,warranty_start_date,warranty_end_date,'warranty','ending soon','warranty ends soon for','System','System',NOW(),NOW() 
     FROM equipments WHERE TIMESTAMPDIFF(WEEK,NOW(),warranty_end_date)<5 AND TIMESTAMPDIFF(WEEK,NOW(),warranty_end_date)>0; 
     END IF; 

    END $$ 

DELIMITER ; 

和我的事件狀態是:

Db:db_medisup 
Name:near_end_warranty 
Definer:[email protected] 
Time zone:SYSTEM 
Type:RECURRING 
Execute at:NULL 
Interval value:1 
Interval field:HOUR 
Starts:2015-05-08 07:11:09 
Ends:NULL 
Status:ENABLED 
Originator:1 
character_set_client:utf8 
collation_connection:utf8_general_ci 
Database Collation:latin1_swedish_ci 

我想從多行設備表根據條件並按小時插入到通知表中。我在07:11創建了該事件,其9:52已經並沒有向通知表中插入任何行.warranty_end date:2015-05-20 on two設備錶行和今天的da行te是2015-05-08,因此必須將兩行添加到通知表中。這裏可能存在什麼問題?

+0

是調度器實際運行嗎? 'show variables like%event%' –

+0

如何檢查變量,我已經在帖子上發佈了事件狀態了? – Sumit

+0

您只需運行上述命令。即使調度程序關閉,您也可以查看事件狀態 –

回答

0

我實際上發現了確切的問題,表中的字段名稱和查詢中存在輕微的錯誤,現在我已經解決了它,並且一切都運行完美。