表'performance_schema.session_variables'不存在

时间:2015-08-12 14:04:20

标签: mysql upgrade

将MySQL升级到5.7.8-rc之后 并登录到服务器我收到错误:

Table 'performance_schema.session_variables' doesn't exist

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

9 个答案:

答案 0 :(得分:474)

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

mysql_upgrade -u root -p --force

需要重启MySQL服务器。

答案 1 :(得分:194)

mysql_upgrade也适用于我:

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

此致 MSZ。

答案 2 :(得分:99)

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

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

答案 3 :(得分:12)

由于上述答案中没有一个能够解释所发生的事情,因此我决定加入并为此问题提供更多细节。

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

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

  • 有机腐败(卷出kaboom,引擎错误,内核驱动程序问题等)
  • mysql Patch期间的损坏(在mysql补丁期间发生这种情况并非闻所未闻,特别是对于主要版本的升级)
  • 一个简单的“drop database 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读取变量,因为标志被转动ON,它正在读取它。由于performance_schema已损坏,因此连接失败。

尽管停机,但运行MySQL升级是最好的方法。打开标志是一个选项,但它带有它自己的一组含义,因为它已经在这个线程中被指出。

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

答案 4 :(得分:4)

不使用-p <:p>,请执行以下步骤

  1. mysql_upgrade -u root
  2. systemctl restart mysqld
  3. 我遇到了同样的问题而且有效!

答案 5 :(得分:1)

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

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

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

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

apt-get update

答案 6 :(得分:0)

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

答案 7 :(得分:0)

如果在使用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:)

答案 8 :(得分:-2)

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

请参阅此问题:Table 'performance_schema.session_variables' doesn't exist

根据它:

  1. open cmd
  2. cd [installation_path]\eds-binaries\dbserver\mysql5711x86x160420141510\bin
  3. mysql_upgrade -u root -p --force