2013-03-05 11 views
2

我的MySQL事件永遠不想執行。
我使用最新的5.6.10版本,但問題也出現在5.5版本中。
我有1個主 - 許多從站配置。我想在主人身上運行這個活動。
MySQL事件調度程序不起作用,但一切都設置了

  1. 的my.ini我已經設置 event_scheduler = ON

2,檢查此:

show variables like '%event_scheduler%'; 
+-----------------+-------+ 
| Variable_name | Value | 
+-----------------+-------+ 
| event_scheduler | ON | 
+-----------------+-------+ 

show processlist\G 

Id: 1 
User: event_scheduler 
Host: localhost 
db: NULL 
Command: Daemon 
Time: 720 
State: Waiting on empty queue 
Info: NULL 
... 

3,接着我有一個週期性事件上的主服務器。
這絕不想執行。我也嘗試將日期更改爲不同的時間。

CREATE EVENT IF NOT EXISTS dbname.event_xyz 
ON SCHEDULE EVERY 1 DAY STARTS '2013-02-05 00:15:00' 
ON COMPLETION PRESERVE 
DISABLE ON SLAVE 
COMMENT 'Collect data from ...' 
DO CALL dbname._procedurename; 

我沒有直接調用「_procedurename」過程的錯誤。

4,事件的創建者和程序是「根」。

5的

show events\G 

Db: dbname 
Name: event_xyz 
Definer: [email protected] 
Time zone: SYSTEM 
Type: RECURRING 
Execute at: NULL 
Interval value: 1 
Interval field: DAY 
Starts: 2013-02-05 00:15:00 
Ends: NULL 
Status: SLAVESIDE_DISABLED 
Originator: 1 
character_set_client: utf8 
collation_connection: utf8_general_ci 
Database Collation: utf8_general_ci 

6的輸出,重新啓動主服務器我得到在 masterservername.err下列行:

... 
Event Scheduler: Purging the queue. 0 events 
... 
Event Scheduler: Loaded 0 events 
... 

show processlist\G 

顯示event_scheduler

State: Waiting on empty queue ! 

所以,我的問題是爲什麼不在我的主服務器上運行事件?
爲什麼事件調度程序不知道以前定義的事件?
我錯過了什麼嗎?

+0

你可以測試事件的正文嗎? procudure可能有問題。嘗試執行INSERT或任何其他語句以確保事件有效。 – Devart 2013-03-05 12:24:27

+0

我沒有錯誤直接調用事件正文。 – Egeri 2013-03-05 16:08:34

+0

錯誤日誌中是否有錯誤? – Devart 2013-03-06 07:24:11

回答

3

也許這是一個錯誤。

解決的辦法是去除從事件聲明命令

DISABLE ON SLAVE 

參數。

之後,事件狀態更改爲「ENABLED」狀態,並由主服務器上的事件調度器觸發。

在從屬上,此事件的狀態以「SLAVESIDE_DISABLED」狀態複製。

那麼,爲什麼在CREATE EVENT語法中存在「DISABLE ON SLAVE」參數呢?

相關問題