我在网站的几个部分使用一个mySQL数据库,其中一个部分不工作,当我转到该部分的链接时,它会给出错误"1146 error @第39行:表'database_name.table_name‘不存在“
我登录了PHPmyAdmin,在"table_name“的列表中丢失了”table_name“,似乎有人入侵并丢弃了它。
我从备份服务器获得了以下文件:
我把所有这些文件打开到记事本中查看数据,frm和myi是可以理解的,可能是因为它们是结构,但是myd是可以理解的,因为它有数据。
现在,我想通过这3个文件恢复丢失的数据,但我不知道如何恢复。
发布于 2012-03-26 15:15:11
为了将名为MyISAM的table_name还原到database_name中,必须执行以下操作
)运行以下查询:show variables like 'datadir';
这将告诉您数据的基本目录是什么。对于这个例子,让我们使用默认值(/var/lib/mysql)
步骤2)将table_name.frm复制到/var/lib/mysql/数据库
步骤03)将table_name.MYD复制到/var/lib/mysql/数据库
步骤04)将table_name.MYI复制到/var/lib/mysql/数据库
步骤05) chown mysql:mysql /var/lib/mysql/database/table_name.*
就这样。不需要重新启动mysql,因为information_schema数据库非常敏感,并且非常快速地检测文件夹更改。
要确保mysql知道还原的表,请执行以下操作:
步骤06)运行此查询
SELECT * FROM information_schema.tables
WHERE table_schema = 'database_name'
AND table_name = 'table_name'\G您应该会看到有关表大小和更改日期的信息。
)运行以下命令
use database_name
show tables;您应该会在清单中看到还原的表
发布于 2012-03-26 14:04:51
Myisam引擎保存.myd索引中的数据,在.myi中保存数据,在.frm文件中保存结构,您只需将这些文件粘贴到特定数据库中的数据中,并重新启动mysql服务,然后就可以从该表访问数据。
在这种情况下,如果由于版本的更改可能会产生一些错误,比如dy,可以删除某些特性,或者在这种情况下它们可能添加了一些额外的特性,那么您需要运行mysql_upgrade实用程序,这个工具位于bin directry中,可以修复这些问题。
问候Deepak M
https://dba.stackexchange.com/questions/12400
复制相似问题