我试图仅停止一个事件,但下面的 SQL 会停止所有事件:
SET GLOBAL event_scheduler = OFF;
或者:
SET @@global.event_scheduler = OFF;
或者:
SET GLOBAL event_scheduler = 0;
或者:
SET @@global.event_scheduler = 0;
那么,我怎样才能只停止一个事件呢?
我认为你的意思是你在一个调度程序上有5个事件。对吗?
以下是禁用一个事件的方法:
ALTER EVENT myevent
DISABLE;
以下是禁用整个调度程序(所有事件)的方法:
SET GLOBAL event_scheduler = OFF;
所有这些都可以在 http://dev.mysql.com/doc/refman/5.1/en/events.html 阅读 如何禁用一个事件在这里http://dev.mysql.com/doc/refman/5.1/en/alter-event.html
如果您需要获取当前的全局事件状态,这可能对您有用;
select @@global.event_scheduler;
需要考虑的一件事:
仅在服务器启动时才可以将事件调度程序设置为“禁用”。如果 event_scheduler 为 ON 或 OFF,则无法在运行时将其设置为 DISABLED。此外,如果事件调度程序在启动时设置为 DISABLED,则无法在运行时更改 event_scheduler 的值。 在这种情况下,要禁用事件调度程序,请使用以下两种方法之一:
作为启动服务器时的命令行选项:
--事件调度程序=禁用
在服务器配置文件(my.cnf 或 Windows 上的 my.ini)中 系统),包括服务器将读取的行(例如 例如,在 [mysqld] 部分):
event_scheduler=禁用
https://dev.mysql.com/doc/refman/5.7/en/events-configuration.html
ALTER EVENT
声明和我的答案解释了如何仅显示STATUS
列为ENABLED
或DISABLED
的事件:
ALTER EVENT my_event DISABLE;
并且,您可以使用下面的 SQL 禁用 event_scheduler 本身,以便所有事件都不会运行。 *下面的 SQL 不会将每个事件的
STATUS
列更改为 DISABLED
并且 我的回答 解释了如何检查 event_scheduler
的状态:
SET GLOBAL event_scheduler = OFF;
或者:
SET GLOBAL event_scheduler = 0;
或者:
SET @@GLOBAL.event_scheduler = OFF;
或者:
SET @@GLOBAL.event_scheduler = 0;