MySQL定時任務不執行 任務調度不執行原因分析及解決方法


前言
在使用數據庫定時任務時,常常會出現定時任務不執行的問題,現對該問題出現的原因及解決方案做一些分析和整理。

原因分析及解決方法
當我們發現MySQL的定時任務沒有執行時,首先去定時任務中查看【上次運行】時間是否正確,判斷其是否正常執行,如果正常執行則需要考慮是否是事件邏輯不正確。


如果上次運行時間爲空或者不正確,則需要查看數據庫是否打開了定時任務,通過執行下列查詢語句進行查詢
show VARIABLES like ‘%event_schedule%’
如果結果爲ON則說明數據庫打開了定時任務,爲OFF則沒有打開。

如果查詢結果爲OFF,有兩種解決方法:
1.直接在數據庫中設置
SET GLOBAL event_scheduler = ON;
該方法可以立即生效,但是在數據庫重啓後會失效。

2.在數據庫配置文件中進行修改
在my.ini的[mysqld]模塊中添加如下代碼:
event_scheduler=ON
該方法需要重啓數據庫才能生效,不會隨數據庫重啓而失效。

啓動了數據庫的定時任務後,還需要查看你自己的定時任務是否可執行,在數據庫中執行如下查詢語句:
show events
查看查詢結果中的Status是否正確,結果爲ENABLE代表已啓動。

如果狀態不爲ENABLE,我們需要在定時任務的狀態欄將其修改爲ENABLE。
命令如下:
關閉指定事件:
ALTER EVENT 事件名稱 ON COMPLETION PRESERVE DISABLE;
開啓指定事件:
ALTER EVENT 事件名稱 ON COMPLETION PRESERVE ENABLE;

讓定時任務快速執行
有些定時任務是每天或更久才執行一次,如果想要時間自然流動去測試會比較麻煩,這個時候,我們就需要根據計劃修改數據庫服務器的時間,這樣就能快速測試這個定時任務是否能夠正常執行了。


原文鏈接:https://blog.csdn.net/qq_38832153/article/details/121992461

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章