Joh*_*der 6 mysql windows xampp
我正在使用XAMPP运行Windows 10,并在localhost上安装了几十个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文件,而且,你知道......工作吗?它感觉像有只有一个值出位的地方,如果我能找到它,一切都只是"啪"回原位.
小智 2
这个链接为我们做了什么(Restoring Orphan File-Per-Table ibd Files)。
简而言之,你会:
ALTER TABLE ..... DISCARD TABLESPACE;
Run Code Online (Sandbox Code Playgroud)
对于每个受影响的表。然后,对于每个受影响的表:
ALTER TABLE .... IMPORT TABLESPACE; SHOW WARNINGS;
Run Code Online (Sandbox Code Playgroud)
您可以在同一架构上执行此操作,或者在其他数据库中创建新架构并复制所有 *.ibd 文件。在这种情况下:
- 使用表定义创建新架构。
- 对所有表执行丢弃表空间。
- 将新的 *.ibd 文件复制到新架构的右侧文件夹中。
- 为所有表删除导入表空间。
重要的!新架构最好与旧架构同名。
| 归档时间: |
|
| 查看次数: |
19340 次 |
| 最近记录: |