轉自我領導coding_lcc的簡書http://www.lxweimin.com/p/92d2cd569627
1、問題發現:
項目中有一需求需要每天用計劃任務對數據庫進行更新,因此此前開啟了計劃任務來每天定時執行函數。但時不時會發現,這個計劃任務時不時會自動關閉,進行排查后確定原因為:重啟mysql或者Linux系統后,mysql的計劃任務默認為關閉,即執行"show variables like 'event_scheduler';",結果為OFF。
2、解決辦法:
一、單獨執行一次函數,排查函數是否可用。
結果:函數執行成功,排除函數本身錯誤的問題。
二、用"mysql>show events;",查詢mysql中計劃事件的狀態。
結果:查看Status欄,發現status為ENABLED,函數已啟動。
三、查詢計劃事件的狀態:"mysql>SHOW VARIABLES LIKE 'event_scheduler';",是否啟用定時器。
結果:? | event_scheduler |OFF|,定時器關閉。
PS:也可以用"SET GLOBAL event_scheduler = ON;"或者"SET GLOBAL event_scheduler = 1;"來開啟,但沒修改配置文件的前提下,下次重啟服務器依然自動關閉。
四、上網查詢后得知,每次重啟服務器,或者mysql都會導致定時器自動關閉(event_scheduler = OFF),因此我們需要修改配置文件,使得每次mysql啟動時自動開啟定時器。方法如下:
Windows中mysql配置文件為my.ini,Linux中為my.cnf,位置/etc/my.cnf。
修改該文件,在[mysqld]部分加上event_scheduler=ON即可。
五、重啟mysql,檢查是否重啟后默認為ON。
結果:重啟后發現event_scheduler=ON,問題解決。
作者:coding_lcc
鏈接:http://www.lxweimin.com/p/92d2cd569627
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。