Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我将MySQL.MYD、.MYI和.frm文件复制到另一台服务器,现在phpMyAdmin尝试搜索一个不存在的表_Php_Mysql_Sql_Wordpress_Phpmyadmin - Fatal编程技术网

我将MySQL.MYD、.MYI和.frm文件复制到另一台服务器,现在phpMyAdmin尝试搜索一个不存在的表

我将MySQL.MYD、.MYI和.frm文件复制到另一台服务器,现在phpMyAdmin尝试搜索一个不存在的表,php,mysql,sql,wordpress,phpmyadmin,Php,Mysql,Sql,Wordpress,Phpmyadmin,好的,所以我有一个网站项目,我正在本地使用MAMP在我的计算机上运行。长话短说,这台计算机正在进行维修,我需要弄清楚如何尽快将项目从备份磁盘移动到在线Web服务器。对于HTML、PHP、CSS和JS文件来说,这很容易做到,但对我来说,移动MySQL数据文件更像是一个难题。我能够找到.MYD、.MYI和.frm文件,当我将它们复制到服务器上时(我在复制文件之前创建了一个新数据库),它一开始似乎可以工作。我在phpMyAdmin中看到了所有的表和数据。然后我遇到了一个奇怪的情况:每当我在PMA中进行

好的,所以我有一个网站项目,我正在本地使用MAMP在我的计算机上运行。长话短说,这台计算机正在进行维修,我需要弄清楚如何尽快将项目从备份磁盘移动到在线Web服务器。对于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 
我尝试搜索信息模式以查看是否有内容不同步:

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将这些文件备份到我的时间胶囊中(我必须将它连接到另一台Mac电脑上才能还原这些文件),因此我猜测是上次备份出错,还是(更有可能)我在还原文件时犯了一些错误。我从来没有将时间胶囊文件恢复到另一台Mac电脑上,我发现这比将文件恢复到自己的电脑上要复杂得多,所以我考虑到了我可能会以某种方式出错。但是假设备份是正确的,并且我恢复了正确的,还有什么可以解释这一点呢


如果你需要知道的话,这个项目使用WordPress和Timed的All-in-One Event Calendar插件(),所以这就是“ai1ec”的意思。我不确定此表是否对插件的当前版本至关重要,或者我应该删除该.frm文件并忘掉它。

我打赌您的WP安装版本较旧。我不认为WP指定了一个存储引擎,但是MySQL的默认值过去是
MyISAM
,这就是MYD和MYI文件的用途
MyISAM
纯粹是一个文件存储系统

从MySQL 5.0开始,默认设置更改为
InnoDB
,它没有这些文件。因此,如果您的WP数据库位于较旧版本的MySQL上,并且您升级并安装了此插件,那么它可能以
InnoDB
的形式安装。或者你的插件在自己安装时指定了一个引擎


无论哪种方式,您都必须将表转储并以这种方式导入。您不能只是原始复制InnoDB数据库文件。

以及MySQL用户可以读取的文件,包含
.MYI
文件的目录需要MySQL用户读取、写入和执行。在我的系统上,这是通过以下方式实现的:

chown -R mysql:mysql /var/lib/mysql/dbname
chmod -R 660 /var/lib/mysql/dbname
chown mysql:mysql /var/lib/mysql/dbname
chmod 700 /var/lib/mysql/dbname

我不能把桌子倒出去。这台电脑正在修理,大概一个星期内不会回来,所以我无法访问它的网络服务器。我所能做的就是从备份磁盘原始复制文件。你是说我完蛋了?很遗憾,是的。InnoDB是一种混合文件/内存表方案。如果它没有被转储到一个SQL文件中,那么就没有其他可以做的了。正如Machavity猜测的那样,All-In-One Event Calendar插件将其日志表创建为InnoDB表,因此从该表导入数据看起来我运气不佳。幸好它只是一个日志表,我能够在插件PHP文件中找到创建它的SQL代码。