我正在运行Windows 10,XAMPP和在本地主机上安装的数十个Drupal站点。几个月来一切正常。

今天早上,我在两天前从还原点执行了Windows还原,以摆脱不必要的Windows更新。之后,我的MySQL停止工作。我尝试删除文件ibdata1(我现在知道这是个坏主意),但是当情况变得更糟时,我恢复了最初删除的ibdata1。所有表数据(.frm.ibd文件)仍在C:\xampp\mysql\data中。现在,MySQL至少将启动,但是所有表都“消失了” ...我可以在浏览器中加载phpMyAdmin,并且当我在左侧下拉数据库时,所有表都将显示...但是当我尝试单击时一,它告诉我“找不到表”。

mysql_error.log中,有一些错误,例如InnoDB: Cannot open table mysql/slave_master_info from the internal data dictionary of InnoDB though the .frm file for the table exists.。错误消息中提到了一个URL,该URL据说可以告诉您如何解决此问题,但该消息无益。

我不认为ibdata1已损坏...并且所有有关恢复数据的文章都在某种程度上变得复杂到与问题成比例的疯狂。没有人有一个简单的解决方案。我谷歌搜索错了吗?这至少在我身上发生过两次,每次在我开始遵循我在网上找到的长达10个小时的程序之前,问题就自发解决了。不幸的是,这次不是。当然,我缺少一些简单的东西。我在几十个数据库中有成百上千个表,并且似乎无可奈何地尝试为每个数据库找到模式并手动插入,这是大多数恢复文章所建议的。

数据库不应该只知道如何读取.frm.ibd文件,并且知道吗?感觉某处只有一个值(value)不合时宜,如果我能找到它,那么一切都会“恢复”到位。

最佳答案

对我有用的是:

https://dba.stackexchange.com/a/42932

我的数据库是InnoDB,因此id出现问题,并且在升级macOS时遇到了这个问题。我将引用主要部分:

07-26 09:30