MYSQL EVENT事件無法生效

2022-07-07 07:12:14 字數 1487 閱讀 5064

事件(event)是mysql在相應的時刻呼叫的過程式資料庫物件,它由乙個特定的執行緒來管理的,它有兩種排程方式。

一次性呼叫。

週期性呼叫。

最近在使用週期性呼叫時,發現無法生效;我們歸納為兩種問題:

全域性的event狀態預設是關閉的;

新建事件的狀態為disable;

解決方案

問題1:將全域性event狀態修改為:開啟

進入mysql命令列模式

檢視event是否開啟:show variables like 'event_scheduler';

這時你會發現 event_scheduler 的值是 off

mysql> show variables like 'event_scheduler';

+-----------------+-------+

| variable_name | value |

+-----------------+-------+

| event_scheduler | off |

+-----------------+-------+

執行完以上命令,再次檢視event狀態,可以看到event_scheduler的值變成on,此時event的狀態為「開啟」;

注意:此方法只是臨時開啟event狀態,當mysql重新啟動時,event狀態會改變回原來的「off」,即「關閉狀態」;

windows系統的 mysql的配置檔名是my.inilinux系統的 mysql 的配置檔名是my.cnf

開啟配置檔案在[mysqld]模組下新增event_scheduler=onevent_scheduler=1

重新啟動mysql

問題2:新建事件的狀態為改為enable;

修改完之後,event事件生效了。

經過多次測試」週期性呼叫「事件:發現每1秒、每一分鐘執行一次都成功,當測試每天執行一次時,發現並沒有生效。

後來發現,我測試」每天執行一次時「是修改系統時間去測試的,問題就出現在這裡。

event事件並不是每時每刻都在掃瞄,而是採用休息休眠。 休眠一段時間後,等待下一次執行,再重新獲取新的系統時間,再重新計算。 

總結來說,mysql記錄的是啟動時間和時間間隔,通過系統時間,三個數值來計算下乙個休眠時間,所以在休眠期間內改變系統時間,對休眠時間是無效的。

也就是說,休眠期間,它並沒實現監聽系統的時間

Mysql Event事件相關

常用語句 建立定時器,並執行sql語句塊 delimiter create event b on schedule every 1 second on completion preserve enable do begin insert into test a values now insert i...

MySQL event,作業,事件排程

建立表記錄event執行過程 create table mysql event history dbname varchar 128 not null default eventname varchar 128 not null default starttime datetime not null...

無法重來的一生

我們總希望生活是幸福美好的,但總有一些事情,我們不得不去面對。就像下面我將要跟你說的話,也許你不愛聽,但我們都要勇敢地面對,不是嗎?孩子,如今你長大了,獨立了,今後無論你做什麼,都要自己負責。乙個人成熟的標誌,就是開始懂得對自己的人生負責。你應該明白自己喜歡什麼,想要什麼,想過乙個怎樣的人生。並朝這...