mysql事件调度器默认关闭,需通过set global event_scheduler=on临时启用或在phpenv的my.ini/my.cnf中[mysqld]段添加event_scheduler=on并重启mysql服务永久生效,且用户须具super权限。

phpEnv 默认不启用 MySQL Event Scheduler,必须手动开启并持久化配置,否则每次重启服务后自动关闭。
检查 event_scheduler 当前状态
进入 phpEnv 自带的 MySQL 客户端(如通过 phpEnv 控制面板打开命令行或使用 Navicat 连接),执行:
SELECT @@event_scheduler;
或
SHOW VARIABLES LIKE 'event_scheduler';
返回 OFF 表示未启用;ON 才是正常状态。注意:phpEnv 的 MySQL 通常默认为 OFF。
临时启用:SET GLOBAL event_scheduler = ON
这条命令能立刻生效,但仅对当前 MySQL 实例有效 —— phpEnv 重启、系统重启、甚至 MySQL 服务重载都会让它回归 OFF。
- 必须用具有
SUPER权限的账号执行(通常是root) - 执行后立即可用:
SET GLOBAL event_scheduler = ON; - 验证是否成功:
SELECT @@event_scheduler;应返回1或ON - 如果报错
ERROR 1227 (42501): Access denied,说明权限不足,需换 root 账号或检查 phpEnv 用户权限配置
永久启用:修改 phpEnv 的 my.cnf 配置文件
phpEnv 的 MySQL 配置文件路径一般为:phpEnv\MySQL\my.ini(Windows)或 phpEnv/MySQL/my.cnf(类 Unix 环境)。直接编辑该文件,在 [mysqld] 段落下添加:
event_scheduler = ON
保存后,必须完全重启 phpEnv 的 MySQL 服务(不是仅刷新页面或重连客户端):
- 在 phpEnv 控制面板中点击「重启 MySQL」或「Stop → Start」
- 若无效,尝试关闭整个 phpEnv 再重新启动
- 重启后务必再次运行
SELECT @@event_scheduler;确认值为ON - 不要写成
event_scheduler=1或event_scheduler=true—— MySQL 仅识别ON/OFF字面量
创建事件后仍不触发?重点查这三点
即使 event_scheduler 是 ON,事件也可能静默失败:
-
CREATE EVENT语句里漏了ENABLE(默认是ENABLE,但显式写上更稳妥) - 事件时间表达式写错,比如
EVERY 5 SECOND写成EVERY '5' SECOND(引号在非字符串上下文中多余,部分 MySQL 版本会报语法错误) - MySQL 时区与系统不一致:phpEnv 常用 UTC 或本地时区混乱,用
SELECT NOW(), SYSDATE(), @@time_zone;核对;必要时在[mysqld]中加default-time-zone = '+08:00'
最常被忽略的是:phpEnv 环境下,my.ini 修改后没彻底重启 MySQL,或者误改了 PHP 目录下的配置文件而非 MySQL 目录下的那个。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











