mysql Event Scheduler: Failed to open table mysql.event

MySQL Event Scheduler是MySQL提供的一个可以周期性地执行SQL语句或调用存储过程的功能。当使用Event Scheduler时,有可能会遇到“Failed to open table mysql.event”的错误,本文将详细讲解如何解决这个错误。

问题原因

MySQL Event Scheduler需要在mysql.event表中记录排定的事件的信息。当该错误出现时,通常是因为该表丢失或被删除或存在权限不足的问题等情况引起的。

解决方法

方法一:重建mysql.event表

步骤一:检查是否缺失mysql.event表

进入MySQL命令行,执行以下命令,检查是否缺失mysql.event表:

SHOW TABLES LIKE 'mysql.event';

如果查询结果为空,则表示缺失mysql.event表。

步骤二:重建mysql.event表

执行以下命令,重建mysql.event表:

USE mysql;
DROP TABLE IF EXISTS event;
CREATE TABLE event (
  event_id        INT UNSIGNED NOT NULL AUTO_INCREMENT,
  event_name      VARCHAR(64)  NOT NULL,
  schema_name     VARCHAR(64)      DEFAULT NULL,
  definer         VARCHAR(77)  NOT NULL,
  time_zone       VARCHAR(64)  NOT NULL DEFAULT 'UTC',
  event_status    VARCHAR(18)  NOT NULL,
  on_completion   VARCHAR(12)  NOT NULL,
  created         TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP,
  last_altered    TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  last_executed   TIMESTAMP   DEFAULT NULL,
  event_comment   VARCHAR(64)  NOT NULL,
  originator      INT UNSIGNED NOT NULL,
  character_set_client  VARCHAR(32)      DEFAULT NULL,
  collation_connection  VARCHAR(32)      DEFAULT NULL,
  `database`      VARCHAR(64)  NOT NULL,
  `sql_mode`      SET('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION',
                    'NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS',
                    'MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES',
                    'STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO',
                    'TRADITIONAL','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH'),        
                            DEFAULT '',
  `repeat_interval`      VARCHAR(256) NOT NULL DEFAULT '',
  `starts`               DATETIME     DEFAULT NULL,
  `ends`                 DATETIME     DEFAULT NULL,
  `status`               ENUM('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL DEFAULT 'ENABLED',
  `on_completion`        ENUM('DROP','PRESERVE') NOT NULL DEFAULT 'DROP',
  `created`              TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `last_altered`         TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `last_executed`        DATETIME    DEFAULT NULL,
  `event_comment`        VARCHAR(64) NOT NULL,
  `originator`           INT(10)     UNSIGNED NOT NULL,
  `character_set_client` VARCHAR(32) DEFAULT NULL,
  `collation_connection` VARCHAR(32) DEFAULT NULL,
  `database`             VARCHAR(64) NOT NULL,
   PRIMARY KEY (`event_id`),
   UNIQUE KEY `Name` (`event_name`,`schema_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Event Scheduler';

步骤三:重启MySQL服务

执行以下命令重启MySQL服务:

systemctl restart mysql

方法二:修改用户权限

使用类似以下的命令,修改MySQL用户的权限:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';

其中,'root'是MySQL用户名,'%'表示任意主机都可以连接,'password'是该用户对应的密码。

示例说明

示例1:重建mysql.event表

执行以下命令,重建mysql.event表:

USE mysql;
DROP TABLE IF EXISTS event;
CREATE TABLE event (
  event_id        INT UNSIGNED NOT NULL AUTO_INCREMENT,
  event_name      VARCHAR(64)  NOT NULL,
  schema_name     VARCHAR(64)      DEFAULT NULL,
  definer         VARCHAR(77)  NOT NULL,
  time_zone       VARCHAR(64)  NOT NULL DEFAULT 'UTC',
  event_status    VARCHAR(18)  NOT NULL,
  on_completion   VARCHAR(12)  NOT NULL,
  created         TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP,
  last_altered    TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  last_executed   TIMESTAMP   DEFAULT NULL,
  event_comment   VARCHAR(64)  NOT NULL,
  originator      INT UNSIGNED NOT NULL,
  character_set_client  VARCHAR(32)      DEFAULT NULL,
  collation_connection  VARCHAR(32)      DEFAULT NULL,
  `database`      VARCHAR(64)  NOT NULL,
  `sql_mode`      SET('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION',
                    'NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS',
                    'MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES',
                    'STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO',
                    'TRADITIONAL','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH'),        
                            DEFAULT '',
  `repeat_interval`      VARCHAR(256) NOT NULL DEFAULT '',
  `starts`               DATETIME     DEFAULT NULL,
  `ends`                 DATETIME     DEFAULT NULL,
  `status`               ENUM('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL DEFAULT 'ENABLED',
  `on_completion`        ENUM('DROP','PRESERVE') NOT NULL DEFAULT 'DROP',
  `created`              TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `last_altered`         TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `last_executed`        DATETIME    DEFAULT NULL,
  `event_comment`        VARCHAR(64) NOT NULL,
  `originator`           INT(10)     UNSIGNED NOT NULL,
  `character_set_client` VARCHAR(32) DEFAULT NULL,
  `collation_connection` VARCHAR(32) DEFAULT NULL,
  `database`             VARCHAR(64) NOT NULL,
   PRIMARY KEY (`event_id`),
   UNIQUE KEY `Name` (`event_name`,`schema_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Event Scheduler';

示例2:修改用户权限

执行以下命令,修改MySQL用户的权限:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';

其中,'root'是MySQL用户名,'%'表示任意主机都可以连接,'password'是该用户对应的密码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mysql Event Scheduler: Failed to open table mysql.event - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • MYSQL中常用的强制性操作(例如强制索引)

    MySQL中常用的强制性操作有以下四个: 强制使用索引(FORCE INDEX) 强制选择操作指定索引(USE INDEX) 禁止选择操作使用指定索引(IGNORE INDEX) 强制重新分析表(ANALYZE TABLE) 下面分别详细讲解这些强制性操作的使用方法: 1. 强制使用索引(FORCE INDEX) 有时候MySQL会不按照我们期望的方式使用索…

    MySQL 2023年5月19日
    00
  • MySQL权限控制实现原理

    MySQL权限控制是指对MySQL服务器上的用户和资源进行访问限制的控制机制。它由MySQL特定的权限表决定并且允许管理员为每个MySQL值创建一个或多个帐户,并且要求他们在访问MySQL数据时提供身份验证信息。本篇文章将详细介绍MySQL权限控制的实现原理。 MySQL权限表 MySQL存储权限表系统的信息,其中包括用户和他们的权限。这些信息存储在MySQ…

    MySQL 2023年3月10日
    00
  • 分享下mysql各个主要版本之间的差异

    让我来向您详细讲解分享下mysql各个主要版本之间的差异的完整攻略。 1. 确定各个主要版本 首先,我们需要明确mysql的各个主要版本。常见的包括MySQL 5.5、MySQL 5.6、MySQL 5.7、MySQL 8.0等。这些版本之间有很多差异,我们需要对每个版本的新增功能、改进和移除进行了解。 2. 了解差异 接下来,我们需要了解各个主要版本之间的…

    MySQL 2023年5月19日
    00
  • 30种SQL语句优化的方法汇总

    为了更好地讲解“30种SQL语句优化的方法汇总”的完整攻略,我们可以分为以下几个步骤: 步骤一:收集SQL执行计划 收集SQL执行计划可以让我们更直观地了解SQL在数据库中的执行情况,从而找到优化SQL的方法。有以下两种方法可以收集SQL执行计划: 1.1 通过EXPLAIN命令收集执行计划 EXPLAIN命令可以显示SQL语句的执行计划,包括表的读取顺序、…

    MySQL 2023年5月19日
    00
  • MySQL MHA信息的收集【Filebeat+logstash+MySQL】

    一.项目背景 随着集团MHA集群的日渐增长,MHA管理平台话越来越迫切。而MHA平台的建设第一步就是将这些成百上千套的MHA集群信息收集起来,便于查询和管理。 MHA主要信息如下: (1)基础配置信息; (2)运行状态信息; (3)启动及FailOver的log信息。 集团目前数据库的管理平台是在Archery的基础上打造,所以,需要将此功能嵌入到既有平台上…

    MySQL 2023年4月17日
    00
  • MySQL命令行登入的方式有哪些

    这篇“MySQL命令行登入的方式有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL命令行登入的方式有哪些”文章吧。 方法一: 开始菜单 -> 所有程序 -> MySQL -> MySQL Server 8.0 -&…

    MySQL 2023年4月14日
    00
  • 清晰讲解SQL语句中的内连接,通用于Mysql和Oracle,全是干货哦

    本文章目的:力求清晰明了讲解SQL语句的内连接的各种应用,没有深奥的理解! 前奏:这篇文章和下篇文章会将内连接和外连接讲解清楚SQL语句的多表查询常用的有以下几种:两表联合查询(1)内连接(2)外连接(分左外连接、右外连接)(3)全外连接(4)自连接三表查询(1)三表查询本片讲解两表联合查询的内连接:第一步:准备表,员工表emp,部门表dept关联关系:员工…

    MySQL 2023年4月13日
    00
  • my.cnf(my.ini)重要参数优化配置说明

    首先,说明一下my.cnf(my.ini)是什么: my.cnf(my.ini)是MySQL的配置文件,存放在MySQL的安装目录下,用于配置MySQL的各种参数。 下面是my.cnf的重要参数优化配置说明: 1.缓冲池配置 缓冲池是MySQL的内存池,用来缓冲MySQL的数据和索引。以下是常用缓冲池参数的配置,可以根据实际情况进行调整: # InnoDB缓…

    MySQL 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部