表& # 39;performance_schema.session_variables& # 39;并# 39;t存在

MySQL升级到5.7.8-rc后 和登录到服务器我得到错误:

Table 'performance_schema.session_variables' doesn't exist

我找不到任何解决办法。你能帮忙吗?

181202 次浏览

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

mysql_upgrade -u root -p --force

需要重新启动MySQL服务器。

mysql_upgrade也适用于我:

# mysql_upgrade -u root -p --force
# systemctl restart mysqld
< p >问候, MSz . < / p >
mysql -u app -p
mysql> set @@global.show_compatibility_56=ON;

根据http://bugs.mysql.com/bug.php?id=78159为我工作。

如果你的mysql根用户看起来配置错误,请尝试从mysql官方来源安装配置器扩展:

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

它将帮助您设置一个新的根用户密码。

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

apt-get update

有时候mysql_upgrade -u root -p --force是不够的,

请参考这个问题:表& # 39;performance_schema.session_variables& # 39;并# 39;t存在

根据它:

  1. 打开cmd
  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

我也遇到过同样的问题,而且它有效!

因为上面的答案都不能解释发生了什么,所以我决定加入进来,为这个问题带来更多的细节。

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

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

  • 有机损坏(卷爆炸,引擎错误,内核驱动程序问题等)
  • 在mysql补丁期间发生损坏(在mysql补丁期间发生这种情况并不是没有听说过,特别是在主要版本升级时)
  • 简单的“删除数据库performance_schema”显然会导致此问题,并且它将呈现与已损坏相同的症状

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

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

好的,但是为什么连接失败了呢?因为取决于你正在使用的驱动程序(及其配置),它最终可能会为每个初始化到数据库的新连接运行命令(例如show variables)。因为其中一个命令可以尝试访问已损坏的performance_schema,所以整个连接在完全启动之前就会中止。

所以,总而言之,你五月(现在不可能说出来)在补丁之前已经有performance_schema丢失或损坏。5.7.8补丁迫使引擎从performance_schema中读取你的变量(而不是information_schema,因为它是从information_schema中读取的,因为标志被转换为ON)。由于performance_schema已损坏,连接正在失败。

运行MySQL升级是最好的方法,尽管有停机时间。打开国旗是一种选择,但它有自己的一套含义,因为它已经在这篇文章中指出了。

两者都应该有效,但要权衡后果并知道你的选择:)

对于我的系统,问题最终是我仍然安装了Mysql 5.6,因此mysql_upgrade.exe从安装被调用,而不是一个5.7。导航到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:)