将MySQL升级到5.7.8-rc并登录到服务器后出现错误:
Table 'performance_schema.session_variables' doesn't exist
Run Code Online (Sandbox Code Playgroud)
我找不到任何解决方案.你能帮我吗 ?
Mih*_*tea 479
运行命令@robregonm建议后,我能够登录到mysql服务器:
mysql_upgrade -u root -p --force
Run Code Online (Sandbox Code Playgroud)
需要重启MySQL服务器.
小智 214
mysql_upgrade也适用于我:
# mysql_upgrade -u root -p --force
# systemctl restart mysqld
Run Code Online (Sandbox Code Playgroud)
问候,MSz.
小智 104
mysql -u app -p
mysql> set @@global.show_compatibility_56=ON;
Run Code Online (Sandbox Code Playgroud)
根据http://bugs.mysql.com/bug.php?id=78159为我工作.
Mar*_*ins 18
由于上述答案中没有一个能够解释发生的事情,因此我决定加入并为此问题提供更多细节.
是的,解决方案是运行MySQL Upgrade命令,如下所示:mysql_upgrade -u root -p --force但是发生了什么?
这个问题的根本原因是腐败performance_schema,这可能是由以下原因引起的:
甚至在修补程序之前,这个问题可能已存在于您的数据库中,但MySQL 5.7.8上发生的情况特别是该标志show_compatibility_56将其默认值从默认情况下更改ON为OFF.此标志控制引擎在各种MySQL版本上设置和读取变量(会话和全局)的查询时的行为方式.
因为MySQL 5.7+开始读取并存储这些变量performance_schema而不是on information_schema,所以这个标志是ON在第一个版本中引入的,以减少此更改的爆炸半径并让用户了解更改并习惯它.
好的,但为什么连接失败?因为取决于您正在使用的驱动程序(以及它的配置),它可能最终为启动到数据库的每个新连接运行命令(例如show variables,).由于其中一个命令可以尝试访问已损坏的performance_schema,因此整个连接在完全启动之前将中止.
因此,总而言之,您可能(现在无法告诉)performance_schema在修补之前已经丢失或损坏.5.7.8的补丁然后强制引擎读取你的变量performance_schema(而不是information_schema,因为标志被转动,它正在读取它ON).由于performance_schema已损坏,连接失败.
尽管停机,但运行MySQL升级是最好的方法.打开标志是一个选项,但它带有它自己的一组含义,因为它已经在这个线程上指出.
两者都应该有效,但重要的是后果并知道你的选择:)
| 归档时间: |
|
| 查看次数: |
139656 次 |
| 最近记录: |