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是一种关系型数据库管理系统,具有开源、高效、稳定和安全等特点,被广泛应用于Web开发和数据处理领域。为了使用MySQL,需要先登录数据库服务器,操作完成后再退出服务器。本文将详细介绍MySQL登录和退出服务器方法。 MySQL登录服务器方法 MySQL服务器通常在Linux或Windows操作系统上运行,需要使用MySQL客户端工具进行连接。MyS…

    MySQL 2023年3月10日
    00
  • MySql执行流程与生命周期详解

    MySql执行流程与生命周期详解 MySql执行流程 MySql执行流程主要包括连接、查询分析、查询执行、结果返回四个阶段。 连接 首先客户端和服务器建立连接,客户端向服务器发送连接请求,服务器通过端口接收连接请求,建立连接之后可以开始数据传输。 查询分析 连接建立完成后,客户端发送SQL语句给服务器。服务器首先进行语法分析,将SQL语句转成内部的语法树,然…

    MySQL 2023年5月19日
    00
  • PHP之PDO_MYSQL扩展安装步骤

    转载地址:http://www.cnblogs.com/qq78292959/p/4084868.html 看到CakePHP文档要求安装pdo_mysql扩展,于是就尝试安装了一下。 这里我的系统是CentOS 6.0。如果你的系统是其他版本的Linux/Unix,可以参考。如果你的系统是Windows的,抱歉,以下内容不适合你,请移步。 首先是下载pdo…

    MySQL 2023年4月13日
    00
  • MySQL笔记之Checkpoint机制

    CheckPoint是MySQL的WAL和Redolog的一个优化技术。   一、Checkpoint机制 CheckPoint做了什么事情?将缓存池中的脏页刷回磁盘。 checkpoint定期将db buffer的内容刷新到data file,当遇到内存不足、db buffer已满等情况时,需要将db buffer中的内容/部分内容(特别是脏数据)转储到d…

    2023年4月10日
    00
  • mysql启动报错:The server quit without updating PID file的几种解决办法汇总

    下面我就介绍一下关于”mysql启动报错:The server quit without updating PID file的几种解决办法汇总”的完整攻略。 问题描述 在使用MySQL时,可能会遇到”The server quit without updating PID file”的错误信息,这个错误信息通常会伴随着MySQL启动失败。可能的错误原因包括:…

    MySQL 2023年5月18日
    00
  • Python操作MySQL的一个报错:IndexError: out of range

    # -*- coding: utf-8 -*-import sysimport MySQLdbtry: conn=MySQLdb.connect(host=”localhost”,user=”root”,passwd=”xxx”)except Exception,e:print e sys.exit()#获取操作游标cursor=conn.cursor()#…

    MySQL 2023年4月13日
    00
  • CentOS 7下MySQL服务启动失败的快速解决方法

    下面我来详细讲解在CentOS 7下MySQL服务启动失败的快速解决方法,并给出两条示例说明。 问题描述 当在CentOS 7下使用命令 systemctl start mysqld.service 启动MySQL服务时,可能会出现以下错误信息: Job for mysqld.service failed because the control proces…

    MySQL 2023年5月18日
    00
  • mysql 占用大量写I/O

    zabbix告警,发现某台存放监控数据的数据库主机CPU的IOwait较高,一直持续较长时间。 登录服务器查看磁盘IO发现队列高达90%多,而且经常反复如此 通过iotop查看发现占用io较大的进程是mysql 登录mysql查看show processlist,发现基本上每次io队列较高时都是在insert时,以为是插入语句有问题,于是打开mysql慢查询…

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