安排MySQL事件
我有以下几点:安排MySQL事件,mysql,Mysql,我有以下几点: CREATE EVENT evtConvertExpiredPointsToWinChance ON SCHEDULE EVERY 1 QUARTER STARTS '2016-01-02 00:00:00' DO CALL storedProcedureName; 我不知道为什么它不起作用。我尝试将系统时钟设置为2016-01-01 23:59:30,并等待它超过目标时间,但我认为它没有运行。如果我手动调用storedProcedureName,它就会工作 似乎如果我每5秒钟
CREATE EVENT evtConvertExpiredPointsToWinChance
ON SCHEDULE EVERY 1 QUARTER
STARTS '2016-01-02 00:00:00'
DO CALL storedProcedureName;
我不知道为什么它不起作用。我尝试将系统时钟设置为2016-01-01 23:59:30,并等待它超过目标时间,但我认为它没有运行。如果我手动调用storedProcedureName,它就会工作
似乎如果我每5秒钟做一次小间歇,它就会起作用。。。但我想知道为什么?四是什么意思?这是否意味着第一场比赛将在我开始日期后一个季度举行
mysql> select * from mysql.event\G
*************************** 1. row ***************************
db: meclub
name: evtConvertExpiredPointsToWinChance
body: CALL convertExpiredPointsToWinChances
definer: root@localhost
execute_at: NULL
interval_value: 1
interval_field: MONTH
created: 2016-01-01 00:04:33
modified: 2016-01-01 00:04:33
last_executed: NULL
starts: 2013-12-31 16:00:00
ends: NULL
status: ENABLED
on_completion: DROP
sql_mode: NO_ENGINE_SUBSTITUTION
comment:
originator: 0
time_zone: SYSTEM
character_set_client: utf8
collation_connection: utf8_general_ci
db_collation: utf8_general_ci
body_utf8: CALL convertExpiredPointsToWinChances
1 row in set (0.00 sec)
我注意到开始时间是2013-12-31 16:00:00,那么这是否意味着每个月下午4点开始?所以它不需要时间我通过它?在上面的例子中,我尝试了1个月作为间隔
更新
也许我搞乱了系统时间也搞乱了MySQL
mysql> select * from mysql.event\G
*************************** 1. row ***************************
created: 2015-12-31 16:43:54
modified: 2015-12-31 16:43:54
last_executed: 2015-12-31 08:47:00
starts: 2013-12-31 16:00:00
不知道最后执行的时间怎么可能早于创建时间
更新2
不知道这是不是时区的事情?当我传入datetime字符串以开始时,它是用于什么时区的?UTC?我目前是UTC+8您是否使用SET-GLOBAL EVENT_scheduler=ON启动了调度程序?@MatsKindahl,是的,当我将事件设置为一个小间隔(例如5秒)时,事件工作。对于较大的间隔,可能需要将其设置为正确的触发时间?例如,在我的示例中,如果我将开始时间设置为00:00:00,那么当我将系统时钟设置为23:59:50并让它通过00:00时,事件应该运行吗?