MySQL事件调度程序不起作用,但一切都已设置

时间:2013-03-05 12:14:21

标签: mysql events

我的MySQL事件永远不想执行 我使用最新的5.6.10版本,但问题也出现在5.5版本中 我有1个Master-Many Slaves配置。我想在主人身上举办这个活动。

  1. my.ini 中,我已经设置好了 event_scheduler = ON
  2. 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: root@localhost
    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 !
    

    所以,我的问题是为什么不在我的主服务器上运行该事件?
    为什么事件调度程序对先前定义的事件一无所知?
    我错过了什么吗?

2 个答案:

答案 0 :(得分:3)

也许这是一个错误。

解决方案是删除

DISABLE ON SLAVE
事件声明命令中的

参数。

此后,事件状态更改为“ENABLED”状态,并由主服务器上的Event Scheduler触发。

在奴隶上,此事件的状态以“SLAVESIDE_DISABLED”状态复制。

那么,为什么存在CREATE EVENT语法中的“DISABLE ON SLAVE”参数?

答案 1 :(得分:0)

这可能是错误http://bugs.mysql.com/bug.php?id=67191,修正于5.6.14