gpt4 book ai didi

mysql - InnoDB : Cannot open table from the internal data dictionary of InnoDB though the . 表的 frm 文件存在

转载 作者:可可西里 更新时间:2023-11-01 06:50:46 26 4
gpt4 key购买 nike

我正在运行带有 XAMPP 的 Windows 10 和在本地主机上安装的几十个 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,据说可以告诉您如何解决此问题,但它没有提供任何信息。

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

数据库不应该只知道如何读取 .frm.ibd 文件,并且,你知道……工作吗? 感觉好像只有一个值在某处不合适,如果我能找到它,一切都会“弹”回原位。

最佳答案

这个link 为我们做了什么工作? (恢复孤立文件每表 ibd 文件)。

简而言之,您可以:

ALTER TABLE ..... DISCARD TABLESPACE;

对于每个受影响的表。然后,对于每个受影响的表:

ALTER TABLE .... IMPORT TABLESPACE; SHOW WARNINGS; 

您可以在同一个模式上执行此操作,或者在其他数据库中创建一个新模式并复制所有 *.ibd 文件。在这种情况下:

  • Create the new schema with table definitions.
  • Do the discard tablespace for all tables.
  • Copy the new *.ibd files to the right folder of new schema.
  • Do de import tablespace for all tables.

重要!新架构最好与旧架构同名。

关于mysql - InnoDB : Cannot open table from the internal data dictionary of InnoDB though the . 表的 frm 文件存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40117532/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com