好的,我有一个使用 MAMP 在我的计算机上本地运行的网站项目。长话短说,电脑要维修了,我需要弄清楚如何尽快将项目从我的备份磁盘移动到在线网络服务器。这对于 HTML、PHP、CSS 和 JS 文件很容易完成,但移动 MySQL 数据文件对我来说更像是一个难题。我能够找到 .MYD、.MYI 和 .frm 文件,当我将它们复制到服务器时(我在复制文件之前创建了一个新数据库)一开始似乎可以正常工作。我在 phpMyAdmin 中看到了所有表格和数据。然后我遇到了这个奇怪的事情:每当我在 PMA 中进行全局数据库搜索时,PMA 都会尝试搜索一个不存在的表,导致 MySQL 崩溃。
SHOW FULL FIELDS FROM `wp_ai1ec_logging` FROM `foobar` ;
#1146 - Table 'foobar.wp_ai1ec_logging' doesn't exist
我尝试搜索 information_schema 以查看是否有某些内容不同步:
SELECT * FROM `information_schema`.`TABLES`
WHERE `TABLE_NAME` LIKE 'wp_ai1ec_logging'
但是我一无所获。所以我回到数据文件,发现了这个奇怪的事实:有一个 wp_ai1ec_logging.frm 文件,但没有相应的 wp_ai1ec_logging.MYD 或 wp_ai1ec_logging.MYI 文件。这意味着什么?我不知道这些文件类型是什么意思,但由于某种原因,似乎每个表都有一个 .frm、.MYD 和 .MYI 文件,除了这个表。我使用 Time Machine 将这些文件备份到我的 Time Capsule(我必须将它连接到另一台 Mac 才能恢复文件),所以我猜测要么是上次备份出错,要么(更有可能)我在恢复时犯了一些错误文件。我从来没有必要将 Time Capsule 文件恢复到另一台 Mac,我发现它比将文件恢复到我自己的计算机要棘手得多,所以我考虑到我做错了的可能性。但是假设备份是正确的并且我恢复正确,还有什么可以解释这个?
如果您需要知道,这个项目使用 WordPress 和 Timely 的多合一事件日历插件 (http://time.ly/),所以这就是“ai1ec”的意思。我不确定此表是否对插件的当前版本至关重要,或者我应该删除该 .frm 文件并忘记它。
最佳答案
我敢打赌您的 WP 安装版本较旧。我不认为 WP 指定了存储引擎,但 MySQL 的默认值曾经是 MyISAM
,这就是您的 MYD 和 MYI 文件的用途。 MyISAM
是一个纯粹的文件存储系统。
从 MySQL 5.0 开始,默认更改为 InnoDB
,它没有这些文件。因此,如果您的 WP 数据库是在旧版本的 MySQL 上,并且您升级并安装了此插件,则它可能安装为 InnoDB
。该插件或您的插件在安装时指定了一个引擎。
无论哪种方式,您都必须转储表并以这种方式导入。您不能只原始复制 InnoDB
数据库文件。
关于php - 我将 MySQL .MYD、.MYI 和 .frm 文件复制到另一台服务器,现在 phpMyAdmin 试图搜索一个不存在的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22446170/