Table 'performance_schema.session_variables' 不存在

Table 'performance_schema.session_variables' doesn't exist

升级 MySQL 到 5.7.8-rc 后 并登录到服务器时出现错误:

Table 'performance_schema.session_variables' doesn't exist

我找不到任何解决方案。你能帮忙吗?

在 运行 @robregonm 建议的命令后,我能够登录到 mysql 服务器:

mysql_upgrade -u root -p --force

需要 MySQL 服务器重新启动。

mysql_upgrade 对我也有用:

# mysql_upgrade -u root -p --force
# systemctl restart mysqld

此致, MSz.

mysql -u app -p
mysql> set @@global.show_compatibility_56=ON;

根据 http://bugs.mysql.com/bug.php?id=78159 对我有用。

作为 64 位问题,如果您的 mysql root 用户看起来配置错误,请尝试从 mysql 官方来源安装配置器扩展:

https://dev.mysql.com/downloads/repo/apt/

它将帮助您设置新的 root 用户密码。

确保更新您的存储库 (debian/ubuntu) :

apt-get update

有时候mysql_upgrade -u root -p --force不够真实,

请参考这个问题:

根据它:

  1. 打开命令
  2. cd [installation_path]\eds-binaries\dbserver\mysql5711x86x160420141510\bin
  3. mysql_upgrade -u root -p --force

在没有 -p 的情况下执行以下步骤:

  1. mysql_upgrade -u root
  2. systemctl restart mysqld

我遇到了同样的问题,并且有效!

由于上面的 none 个答案实际上解释了发生的事情,我决定插话并为这个问题提供更多细节。

是的,解决方法是运行MySQL升级命令,如下:mysql_upgrade -u root -p --force,但是发生了什么?

此问题的根本原因是 performance_schema 损坏,可能由以下原因引起:

  • 有机损坏(卷突然爆炸、引擎错误、内核驱动程序问题等)
  • mysql 补丁期间的损坏(在 mysql 补丁期间发生这种情况并非闻所未闻,特别是对于主要版本升级)
  • 一个简单的 "drop database performance_schema" 显然会导致此问题,并且会出现与已损坏相同的症状

这个问题可能在打补丁之前就已经存在于你的数据库中,但是在 MySQL 5.7.8 上发生的具体情况是标志 show_compatibility_56 改变了它的默认值 ON 默认为 OFF。此标志控制引擎在各种 MySQL 版本上设置和读取变量(会话和全局)的查询行为。

因为 MySQL 5.7+ 开始在 performance_schema 而不是 information_schema 上读取和存储这些变量,这个标志在第一个版本中被引入为 ON减少这个变化的爆炸半径,让用户知道这个变化并习惯它。

好的,但是为什么连接失败?因为根据您使用的驱动程序(及其配置),它可能会为每个启动到数据库的新连接执行 运行ning 命令(例如 show variables)。因为这些命令之一可以尝试访问损坏的 performance_schema,所以整个连接在完全启动之前就中止了。

因此,总而言之,您可能(现在无法判断)在修补之前 performance_schema 丢失或损坏。 5.7.8 的补丁然后强制引擎从 performance_schema 中读取您的变量(而不是 information_schema,因为标志被转换 ON,它从中读取变量。由于 performance_schema 已损坏,连接失败。

运行 MySQL 升级是最好的方法,尽管会停机。打开标志是一种选择,但它有其自身的一系列含义,正如该线程中已经指出的那样。

两者都应该有效,但要权衡后果并了解您的选择:)

对于我的系统,问题最终是我仍然安装了 Mysql 5.6,因此调用了该安装的 mysql_upgrade.exe 而不是 5.7 的 mysql_upgrade.exe。导航到 C:\Program Files\MySQL\MySQL Server 5.7\bin 和 运行 .\mysql_upgrade.exe -u root

如果在使用 mysql_upgrade -u root -p --force 命令时出现此错误:

Could not create the upgrade info file '/var/lib/mysql/mysql_upgrade_info' in the MySQL Servers datadir, errno: 13

只需在命令前加上sudo即可。这对我有用,我解决了我的问题。所以,它是:sudo mysql_upgrade -u root -p --force :)