更改 MySQL 中的事件调度程序状态

问题描述 投票:0回答:4

我试图仅停止一个事件,但下面的 SQL 会停止所有事件:

SET GLOBAL event_scheduler = OFF;

或者:

SET @@global.event_scheduler = OFF;

或者:

SET GLOBAL event_scheduler = 0;

或者:

SET @@global.event_scheduler = 0;

那么,我怎样才能只停止一个事件呢?

mysql database events scheduler mysql-event
4个回答
17
投票

我认为你的意思是你在一个调度程序上有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


0
投票

如果您需要获取当前的全局事件状态,这可能对您有用;

select @@global.event_scheduler;

0
投票

需要考虑的一件事:

仅在服务器启动时才可以将事件调度程序设置为“禁用”。如果 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


0
投票

您可以使用下面的 SQL 禁用事件。 *文档解释了

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;
© www.soinside.com 2019 - 2024. All rights reserved.