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
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存在
根据它:
cd [installation_path]\eds-binaries\dbserver\mysql5711x86x160420141510\bin
在没有-p的情况下执行以下步骤:
-p
mysql_upgrade -u root
systemctl restart mysqld
我也遇到过同样的问题,而且它有效!
因为上面的答案都不能解释发生了什么,所以我决定加入进来,为这个问题带来更多的细节。
是的,解决方案是运行MySQL升级命令,如下所示:mysql_upgrade -u root -p --force,但发生了什么?
此问题的根本原因是performance_schema的损坏,这可能由以下原因引起:
performance_schema
这个问题可能在补丁之前就已经出现在你的数据库上了,但是在MySQL 5.7.8上发生的具体情况是标志show_compatibility_56改变了它的默认值,从默认的ON变成了OFF。这个标志控制引擎在各种MySQL版本上设置和读取变量(会话和全局)时的行为。
show_compatibility_56
ON
OFF
因为MySQL 5.7+开始在performance_schema上读取和存储这些变量,而不是在information_schema上,这个标志在第一个版本中被引入为ON,以减少这个变化的爆发半径,并让用户知道这个变化并习惯它。
information_schema
好的,但是为什么连接失败了呢?因为取决于你正在使用的驱动程序(及其配置),它最终可能会为每个初始化到数据库的新连接运行命令(例如show variables)。因为其中一个命令可以尝试访问已损坏的performance_schema,所以整个连接在完全启动之前就会中止。
show variables
所以,总而言之,你五月(现在不可能说出来)在补丁之前已经有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
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:)
sudo
sudo mysql_upgrade -u root -p --force