2

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

  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: 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 !

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

4

2 回答 2

4

也许这是一个错误。

解决方案是删除

DISABLE ON SLAVE

来自事件声明命令的参数。

此后,事件状态变为“启用”状态并由主服务器上的事件调度程序触发。

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

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

于 2013-03-06T07:39:54.663 回答
0

这可能是错误http://bugs.mysql.com/bug.php?id=67191,已在 5.6.14 中修复

于 2016-09-08T11:39:38.073 回答