即使 MySQL 重启,我也想坚持
event_scheduler
为 ON
;我怎样才能实现这个目标?
SET GLOBAL event_scheduler = ON;
可以设置
event_scheduler=ON
在
my.ini
或 my.cnf
文件中,然后重新启动服务器以使设置生效。
一旦设置,
event_scheduler
将始终保持ON
,无论您的服务器是否重新启动。
打开您的 /etc/mysql/my.ini 文件并添加:
event_scheduler = on
在 [mysqld] 部分下
(在 mysql 5.5.35-0+wheezy1 - Debian 下测试)
一种方法 - 如果有可能重新启动 mysql,您可以设置系统变量并使用这些变量。
这里是链接在mysql中使用系统变量
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
在文件末尾添加此行:
event_scheduler=ON
然后重新启动并检查守护进程是否在重新启动后启动:
登录mysql bash:
mysql -u <user> -p
然后运行命令:
SHOW PROCESSLIST;
现在您应该在列表中看到事件调度程序守护进程
在我们的 Windows Server 2012 系统上,这些或任何其他解决方案都不起作用。然后我查看了启动的注册表项:
"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.6\my.ini" MySQL56
诡计、邪恶就是
ProgramData
。这不是Program Files
。查看程序文件,您会看到一个 my-default.ini
文件,放在那里只是为了彻底搞砸您。
诀窍是在注册表中找到路径,这对我来说是:
HKEY_LOCAL_MACHINE\SYSTEM\Services\MySQL56
event_scheduler(全局变量)默认为
ON
,因此如果重新启动 MySQL,event_scheduler
将重置为 ON
。
但是,如果您希望即使MySQL重新启动,
event_scheduler
仍为OFF
,您可以使用以下SQL将event_scheduler
保留为OFF
。 *文档解释了如何保存全局变量:
SET PERSIST event_scheduler = OFF;
SET @@PERSIST.event_scheduler = OFF;
此外,您可以禁用
event_scheduler
来持久化下面的 SQL。 *下面的 SQL 不会更改 event_scheduler
的值,并且 文档 解释了如何禁用全局变量:
RESET PERSIST event_scheduler;