mysql Event Scheduler: Failed to open table mysql.event

yizhihongxing

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 5.6.14主从复制(也称mysql AB复制)环境配置方法

    MySQL 5.6.14主从复制环境配置方法 一、前提条件 在进行MySQL主从复制环境配置前,请确保满足以下条件: 在主服务器和从服务器之间已经有网络通讯能力,可以相互访问; 主服务器和从服务器已经安装了MySQL 5.6.14版本,并且启动了MySQL服务; 主服务器的MySQL配置文件my.cnf中的server-id已经设置好。 二、配置主服务器 1…

    MySQL 2023年5月18日
    00
  • 详解MySQL的锁(LOCK)机制

    MySQL锁机制是数据库中重要的一部分,它可以保证并发访问数据时数据的正确性及一致性。MySQL提供了多种锁机制,包括表级锁和行级锁。 表级锁 表级锁是指对整张表进行加锁,保证在数据操作的过程中,表不会被其他用户或事务修改或删除。表级锁包含两种类型:共享锁和排他锁。 共享锁(Shared Lock):多个事务可以共享同一份数据,但只能读取数据,不能修改数据,…

    MySQL 2023年3月10日
    00
  • MySQL创建视图(CREATE VIEW)

    MySQL中的视图是一个虚拟表,其内容基于 SELECT 语句定义,可以被用户查询。视图使得我们可以简化复杂的查询和抽象复杂的数据结构,从而提高数据查询和管理的效率。 创建视图的基本语法如下: CREATE VIEW view_name AS SELECT column1, column2, … FROM table WHERE condition; 其…

    MySQL 2023年3月10日
    00
  • MySQL多线程复制遇到Error_code: 1872的解决方案

    MySQL多线程复制是一种加快数据复制速度的方法,但是在实际应用中,有可能会出现Error_code: 1872的错误,导致复制失败。本文将详细讲解这个错误的产生原因以及解决方案,希望能够帮助大家解决这个问题。 问题产生原因 在MySQL多线程复制过程中,如果主从库的事务数量不匹配,就可能会出现Error_code: 1872的错误。这个错误的产生是因为复制…

    MySQL 2023年5月18日
    00
  • 详解MySQL算术运算符

    MySQL中的算术运算符包括加(+)、减(-)、乘(*)、除(/)、取模(%)等。下面分别介绍它们的使用方法并提供实例说明。 加法运算符(+) 加法运算符用于两个数值类型的数据相加,也可以用于字符串类型的数据拼接。 实例: SELECT 2+2; — 输出4 SELECT 'Hello'+' World'; — 输…

    MySQL 2023年3月9日
    00
  • MySQL问答系列之什么情况下会用到临时表

    MySQL问答系列之什么情况下会用到临时表 什么是临时表 临时表是一种特殊的表,用于存储临时数据。与普通表不同的是,临时表的数据只存在于当前会话中,一旦关闭该会话,临时表就会自动删除。 MySQL提供两种类型的临时表:局部临时表和全局临时表。局部临时表只能在当前数据库中使用,而全局临时表则可以在所有数据库中使用。 什么情况下会用到临时表 1. 临时存储查询结…

    MySQL 2023年5月19日
    00
  • MySql8.0 安装重要的两步。

    1.去官网下载mysql社区版 windows安装包。https://dev.mysql.com/downloads/windows/installer/8.0.html   https://dev.mysql.com/downloads/         2.在安装包 安装的过程中,有一步就是启动mysql 会失败:             然后修改服务后…

    MySQL 2023年4月13日
    00
  • 详解MySQL AS:设置别名

    MySQL AS是用于给SQL查询结果列、表和子查询设置别名的关键字。AS不是必需的,但它使得查询结果更易于阅读和理解。 AS用法示例: 列别名 在SELECT语句中,使用AS关键字为查询结果列设置别名。例如: SELECT first_name AS given_name, last_name AS family_name FROM customers; …

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