本机表'performance_schema'。'???' 结构错误


68

我得到以下内容:

Native table 'performance_schema'.'file_instances' has the wrong structure
Native table 'performance_schema'.'cond_instances' has the wrong structure
Native table 'performance_schema'.'rwlock_instances' has the wrong structure
Native table 'performance_schema'.'mutex_instances' has the wrong structure
...

而且,当我重新启动MySql时,出现了这些错误。似乎导致MySql Administrator变得不稳定,我得到了很多:

"MySQL server has gone away"

Answers:


-4

显然,MySQL模式存储由于某种原因而损坏。这些原因可能是:

  • 您已损坏数据库 information_schema
  • 文件系统损坏或文件系统中的某些错误损坏了数据库。
  • 由于MySQL中的错误,MySQL内部人员破坏了模式数据库(以前可能没有人遇到过)。

如果没有备份,但是仍然可以访问数据,请首先备份数据,然后执行以下操作:

如果您有备份,请重新安装MySQL(在此之前,请完全清除mysql的所有数据),然后导入数据。


innodb尝试多次重新安装,但没有成功。最后,我不得不重新安装为非事务性数据库(我相信禁用innodb)并对其进行了修复。谢谢
P Hemans 2011年

7
除了重新安装之外,请首先检查以下答案:stackoverflow.com/a/20262826/2166188。@Musa的答案对我有用。
Michal_Szulc '16

18
该答案需要删除。
PHPst 2013年

1
正确的解决方案是@Musa在他的帖子中更新的内容。...如果数据量较小,这可能很好,但如果数据库大小超过500 GB,该怎么办。
Zafar Malik

1
这个答案是一条极端的道路,而事实证明Musa的答案对许多人(包括我)都是有效的,并且更快,更容易应用,应该在进行数据库替换之前先尝试一下。
dubrox

230

尝试在shell中执行以下命令(这里的root用户是mysql root用户,而不是system root)

sudo mysql_upgrade -u root -p

sudo service mysql restart

确保运行此命令后重新启动mysql(注释中所有@Mikepote。)


是啊,升级到较新的版本,而mysql_upgrade可能会导致错误的结构错误
张庭华

83
如果在运行mysql_upgrade后仍然有人出现此错误,请尝试重新启动mysql服务。这为我解决了。
Mikepote

2
谢谢,Mikepote,这正是我遇到的问题。我运行mysql_upgrade,然后出现此错误,并在阅读您的评论后意识到我没有重新启动mysql。
Geoffrey Wiseman 2015年

我已在Ubuntu 15.04上升级到5.7.10,它需要重新启动计算机才能使该错误从MySQL Workbench中消失。
Hatem Jaber

2
在两台基于debian的计算机上也为我工作,尽管我必须使用该--force开关,因为在我的情况下这不是mysql故障。
尼古拉斯

23

我的情况是在表上运行特定查询时出现的。

并且日志还包含:

缺少系统表mysql.proxies_priv; 请运行mysql_upgrade创建它

我已经运行mysql_upgrade,并且该问题消失了。


3
如上所述,您必须在运行mysql_upgrade之后重新启动服务器。在执行此操作之前,您将继续看到这些错误。
gamut


7

当您在以前的安装中安装了MySQL时遇到了此错误,该安装是在没有性能架构或性能架构的旧版本(可能没有所有当前表)的情况下配置的。

我也遇到了这个问题 。为了解决这个问题,我执行了以下操作:

cd /Applications/MAMP/bin/
sudo ./upgradeMysql.sh 

记住要重启mysql服务器。

您可以阅读性能架构构建配置以获取更多详细信息。


2

如果该数据库是Akonadi(KDE)数据库,那么以上还不够。您需要镜像给mysqld的选项,并使用

ps aux | grep mysql

将选项复制到mysql_upgrade命令(我不需要'-u root -p',但是您可以)

mysql_upgrade --defaults-file=/home/USER/.local/share/akonadi/mysql.conf --datadir=/home/USER/.local/share/akonadi/db_data/ --socket=/tmp/akonadi-USER.x0Bvxr/mysql.socket

我真的认为--socket选项是关键。


它是什么?从来没有听说过!@@
Scott Chu

仅在同一台计算机上运行多个mysql服务时才需要。
Zafar Malik'6


0

升级完成后,似乎会发生这种情况。只需重启mysql:

就像在CMD中运行以下命令

sudo mysql_upgrade -u root -p

service mysql restart

并且错误现在应该已经消失了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.