mysql 中的表并非全部显示在 phpadmin 中

mysql 中的表并非全部显示在 phpadmin 中

我最近意外删除了整个 Wordpress 数据库,但幸运的是,我使用 Time Machine 恢复了。

现在的问题是,当我将数据库文件复制回存储所有数据库的路径时,现在只有 28 个表中的 11 个显示,PhPAdmin我不知道为什么。

即使我已经仔细检查了权限组和权限是否与其他数据库完全相同,但我仍然只能看到其中的 11 个。

问题是,如果它不做任何事情我不会介意,但现在我的 Wordpress 无法登录,它说没有找到用户。

更多信息:

我尝试ls在终端中查看所有表是否都已被复制,并且我实际上可以看到所有表都在那里(28 个表,包括一些我不知道是什么的文件。)

我再次对我的数据库进行列表操作,发现这里有问题。

-rw-------@ 8 _mysql  admin        65 Apr 29 20:29 db.opt
-rw-------@ 8 _mysql  admin      8802 Apr 29 22:50 wp_amazonpin_articles_keys.frm
-rw-------@ 8 _mysql  admin      8726 Apr 29 22:50 wp_amazonpin_articles_links.frm
-rw-------@ 8 _mysql  admin      9239 Apr 29 22:50 wp_amazonpin_camps.frm
-rw-------@ 8 _mysql  admin      8568 Apr 29 22:50 wp_amazonpin_categories.frm
-rw-------@ 8 _mysql  admin      8596 Apr 29 22:50 wp_amazonpin_feeds_links.frm
-rw-------@ 8 _mysql  admin      8668 Apr 29 22:50 wp_amazonpin_feeds_list.frm
-rw-------@ 8 _mysql  admin      8712 Apr 29 22:50 wp_amazonpin_keywords.frm
-rw-------@ 8 _mysql  admin      8856 Apr 29 22:50 wp_amazonpin_links.frm
-rw-------@ 8 _mysql  admin      8680 Apr 29 22:50 wp_amazonpin_log.frm
-rw-------@ 8 _mysql  admin      8688 Apr 29 22:50 wp_commentmeta.frm
-rw-------@ 8 _mysql  admin     13380 Apr 29 22:50 wp_comments.frm
-rw-------@ 8 _mysql  admin       540 Apr 29 22:12 wp_links.MYD
-rw-------@ 8 _mysql  admin      3072 Apr 29 22:50 wp_links.MYI
-rw-------@ 8 _mysql  admin     13176 Apr 29 22:12 wp_links.frm
-rw-------@ 8 _mysql  admin         0 Apr 29 22:12 wp_maker.MYD
-rw-------@ 8 _mysql  admin      1024 Apr 29 22:12 wp_maker.MYI
-rw-------@ 8 _mysql  admin      8716 Apr 29 22:12 wp_maker.frm
-rw-------@ 8 _mysql  admin      6404 Apr 29 22:12 wp_option_tree.MYD
-rw-------@ 8 _mysql  admin      8192 Apr 29 22:50 wp_option_tree.MYI
-rw-------@ 8 _mysql  admin      8800 Apr 29 22:12 wp_option_tree.frm
-rw-------@ 1 _mysql  admin   2334552 Apr 30 06:23 wp_options.MYD
-rw-------@ 1 _mysql  admin    318464 Apr 30 06:23 wp_options.MYI
-rw-------@ 8 _mysql  admin      8734 Apr 29 22:12 wp_options.frm
-rw-------@ 8 _mysql  admin      8682 Apr 29 22:50 wp_postmeta.frm
-rw-rw----@ 2 _mysql  admin  26169304 Apr 30 06:02 wp_posts.MYD
-rw-rw----@ 2 _mysql  admin  55496704 Apr 30 06:02 wp_posts.MYI
-rw-rw----@ 7 _mysql  admin     13684 Apr 30 01:14 wp_posts.frm
-rw-------@ 2 _mysql  admin    198896 Apr 30 05:55 wp_stt2_meta.MYD
-rw-------@ 2 _mysql  admin    475136 Apr 30 05:55 wp_stt2_meta.MYI
-rw-------@ 8 _mysql  admin      8698 Apr 29 22:12 wp_stt2_meta.frm
-rw-------@ 8 _mysql  admin      8666 Apr 29 22:50 wp_term_relationships.frm
-rw-------@ 8 _mysql  admin      8768 Apr 29 22:50 wp_term_taxonomy.frm
-rw-------@ 8 _mysql  admin      8668 Apr 29 22:50 wp_terms.frm
-rw-------@ 8 _mysql  admin      8684 Apr 29 22:50 wp_usermeta.frm
-rw-------@ 8 _mysql  admin      8968 Apr 29 22:50 wp_users.frm
-rw-------@ 8 _mysql  admin         0 Apr 29 22:12 wp_visitor_maps_ge.MYD
-rw-------@ 8 _mysql  admin      1024 Apr 29 22:12 wp_visitor_maps_ge.MYI
-rw-------@ 8 _mysql  admin      8628 Apr 29 22:12 wp_visitor_maps_ge.frm
-rw-------@ 8 _mysql  admin        84 Apr 29 22:12 wp_visitor_maps_st.MYD
-rw-------@ 8 _mysql  admin      2048 Apr 29 22:50 wp_visitor_maps_st.MYI
-rw-------@ 8 _mysql  admin      8622 Apr 29 22:12 wp_visitor_maps_st.frm
-rw-------@ 8 _mysql  admin    160612 Apr 29 22:12 wp_visitor_maps_wo.MYD
-rw-------@ 8 _mysql  admin     17408 Apr 29 22:50 wp_visitor_maps_wo.MYI
-rw-------@ 8 _mysql  admin      9408 Apr 29 22:12 wp_visitor_maps_wo.frm
-rw-------@ 8 _mysql  admin         0 Apr 29 22:12 wp_wpseon_syndacc.MYD
-rw-------@ 8 _mysql  admin      1024 Apr 29 22:50 wp_wpseon_syndacc.MYI
-rw-------@ 8 _mysql  admin     12901 Apr 29 22:12 wp_wpseon_syndacc.frm
-rw-------@ 4 _mysql  admin     34032 Apr 30 05:10 wp_wpseon_visits.MYD
-rw-------@ 3 _mysql  admin      4096 Apr 30 06:16 wp_wpseon_visits.MYI
-rw-------@ 8 _mysql  admin      9085 Apr 29 22:12 wp_wpseon_visits.frm

从上面的列表中您可以看到,我的列表中显示的phpadmin是带有的MYD MYIfrm其中有 11 个表真正显示,其余的则缺失。

我不知道为什么会发生这样的事?

答案1

这可能对你现在没有太大帮助,但备份数据库的正确方法是使用实​​用程序将其转储(转储为序列化形式)并保存。然后,当您需要恢复它时,您只需清空数据库,然后导入转储即可。某些软件允许您从其 Web 界面创建数据库备份,或者您可以使用实用程序mysqldump

通过保存实际数据库文件进行备份时会遇到的问题是,它们有点像黑匣子。你对它们几乎没有保证。例如,DBMS(mysql)可能会将某些内容存储在内存中,并等待出于内存原因将它们刷新到磁盘。这意味着,当你这样做时,即使假设你获得了所有文件并将它们正确复制回来,并且 DBMS 恰好接受了它们,如果你在 mysql 守护程序未运行时执行了除备份整个数据目录之外的其他任何操作,它们可能处于不一致的状态。

但是,请检查 mysql 是否具有表文件的权限。例如,如果您使用的是 MyISAM,请检查tablename.frmtablename.MYDtablename.MYI是否存在。如果您使用的是 innodb,如果我没记错的话,还有一个名为 的文件ibdata1和另一个名为 的文件db.opt,它们存储了部分表定义。

一般来说,如果您要进行二进制恢复(这是一种最后的手段),您不会只恢复部分数据目录;您会停止 mysql 守护进程,重命名现有数据目录,并在重新启动守护进程之前将整个备份目录复制到位。尝试仅对某些表进行二进制恢复会产生不确定的结果,包括但不限于您所经历的情况。

相关内容