复制的 MySQL 数据库文件但表未在 PhPMyAdmin 中显示

Posted

技术标签:

【中文标题】复制的 MySQL 数据库文件但表未在 PhPMyAdmin 中显示【英文标题】:Copied MySQL Database Files but Tables are not Showing in PhPMyAdmin 【发布时间】:2015-07-08 00:10:47 【问题描述】:

我最近尝试使用备份文件恢复 Wordpress 网站。我相信 Wordpress 的“导出所有内容”功能实际上导出的很少。

我保留了 WAMP 文件的备份,并阅读了几篇成功地将备份的数据库文件复制到新位置并且数据库工作正常的帖子:

Reinstalled WAMP, Wordpress Tables Not Found BUT Are in phpMYADMIN

Restore the mysql database from .frm files

烦人的是这些对我不起作用。我尝试了两件事:

    将数据库文件夹和备份的 ibfile 复制到这些位置。一旦我这样做并打开 PHP 管理员,就会列出 WP 表,但我收到错误消息,指出它们不存在。请参阅随附的屏幕截图。

    我创建了一个同名的新数据库并进行了全新的 wordpress 安装,它创建了空表。然后,我将包含 .frm 文件的备份文件夹复制到新创建的文件夹中并替换了 ib 文件。这次的问题是 WAMP 无法启动,我被拒绝访问 PHPMyAdmin。错误消息 2002 被主动拒绝。

我注意到了一件事。在备份文件中,自 2014 年 8 月 13 日起未备份 ibdata1 文件。而 ib_logfile1 和 iblogfile() 分别是 29/03/2015 和 19/04/2015。我的备份程序(WD Smartware)是否有可能在备份我的文件方面做得不够好?如果是这样,我是否在浪费时间,我是否应该从头开始重建。

感谢您的帮助。

【问题讨论】:

不是 wordpres 开发者,但您不需要在安装新的 WP 和恢复数据库文件时更改主机、用户名和密码。数据库文件用户名密码位置需要与您的 WP 安装位置匹配。 @SamBown 是的,我也这么认为,一切都一样。我使用相同的 wpconifg 文件,对于 WAMP,用户名是没有密码的标准 root。 @BK435 每个文件随机变化,日期范围从 2015 年 3 月 29 日到 2015 年 4 月 19 日。我想你可能是对的,我对 WD Smartware 作为备份程序一直没有信心,所以这可能只是最后一根稻草 【参考方案1】:

您的 ibdata1 文件包含您的所有 metadata 用于您的数据库、表空间、索引、表结构等...它应该始终与触摸其他所有内容的最后日期一致,该日期似乎是 2015 年 4 月 19 日为你。如果您的 ibdata1 文件自 2014 年 8 月 13 日以来尚未备份,则意味着您的所有元数据都将与您的表 (.frm and .ibd) 文件不符。因此,虽然您可以看到数据库中的表,但您无法访问数据,因为 tablespaces 完全未对齐。在这种情况下,您将遇到臭名昭著的薛定谔 mysql 表案例。简单解释一下,Mysql 认为表同时存在和不存在。我会将您转介至此*** 以获取更多信息。

我不相信Innodb_force_recovery 会在你的情况下工作,但我想试一试不会有什么坏处。 Percona 有一个recovery tool for innodb 来修复已经不同步的metadata(表空间)。你可以试一试。经验上用起来不方便,只能在linux下启动,没必要去工作,网上也很少有人用这个工具。

我的建议是放弃你能做的并重新开始。

【讨论】:

感谢您的建议,我现在无法访问 linux,因此即使我想运行该工具也无法运行。我害怕不得不重新开始,但我想我下次会吸取教训。再次感谢 欢迎您的艾伦.. 很抱歉带来坏消息...我希望重建顺利... 你的第一个链接坏了,帖子已被删除【参考方案2】:

问题可能与文件权限有关。

要验证,检查数据库的文件夹权限,通过右键单击您在/var/lib/mysql/中的文件夹位置,并确保该文件夹的权限设置为'root'读写和使用

【讨论】:

以上是关于复制的 MySQL 数据库文件但表未在 PhPMyAdmin 中显示的主要内容,如果未能解决你的问题,请参考以下文章

数据库更改日志表未在 Liquibase 的 Postgres 环境中创建

BigQuery:导出表未在 GCS 中将 Content-Encoding 设置为 gzip

表未在 Spring Boot v2.2.6.RELEASE postgres 中创建

Spark 临时表未在直线中显示

表未在单选查询中更新

由于语法错误表未在 DB 中创建