事件(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.ini
;linux
系統的 mysql 的配置檔名是my.cnf
;
開啟配置檔案在[mysqld]
模組下新增event_scheduler=on
或event_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...
無法重來的一生
我們總希望生活是幸福美好的,但總有一些事情,我們不得不去面對。就像下面我將要跟你說的話,也許你不愛聽,但我們都要勇敢地面對,不是嗎?孩子,如今你長大了,獨立了,今後無論你做什麼,都要自己負責。乙個人成熟的標誌,就是開始懂得對自己的人生負責。你應該明白自己喜歡什麼,想要什麼,想過乙個怎樣的人生。並朝這...