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日

相关文章

  • 解决ubuntu 16.04安装mysql5.7.17后,登录时出现ERROR 1045 (28000): Access denied for user ‘root’@’localhost’问题

    问题背景:在安装Ubuntu 16.04操作系统后,安装mysql5.7.17,并使用root用户尝试登录mysql时显示”ERROR 1045 (28000): Access denied for user ‘root’@’localhost'”错误提示。 解决过程: 步骤1. 卸载mysql-server 在安装mysql5.7.17之前,如果已经安装了…

    MySQL 2023年5月18日
    00
  • MySQL 8.0:无锁可扩展的 WAL 设计

    这篇文章整理自MySQL官方文档,介绍了8.0在预写式日志上实现上的修改,观点总结如下: 在8.0以前,为了保证flush list的顺序,redo log buffer写入过程需要加锁,无法实现并行,高并发的环境中,会同时有非常多的min-transaction(mtr)需要拷贝数据到Log Buffer,如果通过锁互斥,那么毫无疑问这里将成为明显的性能瓶…

    2023年4月8日
    00
  • MySQL表锁、行锁和页锁

    MySQL中的锁机制可以分为两种类型:表锁和行锁。表锁是在一整个MySQL表上进行加锁,而行锁是在表的某一行数据上进行加锁。此外,MySQL还提供一种称为页锁的锁机制,它是在表的某一页上进行加锁。 表锁 表锁是对整个MySQL表进行锁定。当对一个表进行读或写操作时,如果该表已被其他进程加锁,则会等待解锁后再执行操作。 表锁具有以下优点: 简单:表锁简单易用,…

    MySQL 2023年3月10日
    00
  • 详解mysql慢日志查询

    详解MySQL慢日志查询 什么是MySQL慢日志 MySQL慢查询日志是MySQL服务器自带的一种日志记录功能,用于记录MySQL服务器中响应时间超过预设阈值的SQL语句。MySQL慢查询日志功能对于优化查询语句、解决SQL语句性能问题非常有帮助。 如何启用MySQL慢日志 在MySQL服务器的配置文件中(一般为/etc/my.cnf或/etc/mysql/…

    MySQL 2023年5月19日
    00
  • MySQL如何查看和修改默认存储引擎

    MySQL默认存储引擎是指在创建表时未指定存储引擎时所使用的默认存储引擎。MySQL提供了多种存储引擎,如InnoDB、MyISAM、Memory等,每种存储引擎都有其特点和适用场景。 因此,查看和修改默认存储引擎可以在不同的场景下优化性能和减少空间占用。 MySQL查看默认存储引擎 通过查询系统变量来查看当前的默认存储引擎 在MySQL客户端中输入以下命令…

    MySQL 2023年3月9日
    00
  • mysql 写入中文乱码

    今天从另一个系统往mysql数据库写入数据,发现中文变成了????? 检查数据库的设置 ,server对应字符集是latinl    调整mysql参数配置,配置文件目录/etc/mysql/mysql.conf.d/ 添加一行:character-set-server = utf8    然后重启mysql服务,再次检查服务器参数配置,重新写入中文已正常。…

    MySQL 2023年4月13日
    00
  • 详解MySQL kill 指令的执行原理

    详解MySQL kill 指令的执行原理 MySQL kill指令可用于终止正在执行的MySQL进程,本文将详细讲解MySQL kill指令的执行原理。 MySQL kill指令的语法 KILL [CONNECTION | QUERY] thread_id; 其中,thread_id为MySQL进程的线程ID。 使用CONNECTION参数时将中断指定连接进…

    MySQL 2023年5月19日
    00
  • MySQL修改、删除数据库表字段

    MySQL是一款常用的关系型数据库管理系统,提供了相应的命令和语法来对表进行修改和删除字段。本文将详细介绍MySQL修改、删除表字段的方法,并给出实例说明。 MySQL修改表字段的方法 修改字段名称 使用ALTER TABLE语句,可用于修改字段的名称。 语法: ALTER TABLE 表名 RENAME COLUMN 原字段名 TO 新字段名; 示例如下:…

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