无法访问MySQL数据

时间:2018-07-04 22:06:10

标签: mysql database phpmyadmin appserver

我一直在使用AppServ,其中包括MySQL,PHP,Apache24和phpMyAdmin功能。

有一天,我不小心从计算机上卸载了我的AppServ服务,不得不再次安装它。一切正常,直到我看到数据库无法正常运行。

我无法以某种方式获取我的数据,所以事故发生前我创建的网站也是如此。当我转到phpMyAdmin时,可以清楚地看到我制作的结构,但看不到它们的内容,这就是问题所在。实际上,当我在目录中看到它们时,它们都站在那儿。

Here you see it says the data doesn't exist but it actually does

This is a view from the directory and it all seems good I suppose

谢谢。

注意::AppServ卸载过程不会删除您自己的数据。

1 个答案:

答案 0 :(得分:1)

要从.frm恢复数据库并从.ibd恢复内容,您必须执行以下操作:

1)创建临时数据库,以避免突然与其他数据库一起工作。

CREATE DATABASE soru_sor_recover;

2)从CREATE TABLE个文件生成.frm转储(您需要安装mysql-utilities from here);

mysqlfrm –diagnostic answers.frm >> create_table.txt
mysqlfrm –diagnostic categories.frm >> create_table.txt
mysqlfrm –diagnostic inbox.frm >> create_table.txt
mysqlfrm –diagnostic questions.frm >> create_table.txt
mysqlfrm –diagnostic users.frm >> create_table.txt

3)使用某些gui或仅通过终端导入create_table.txt

mysql -u root -p soru_sor_recover < create_table.txx

4)现在我们有了表,但是它们是空的。因此,我们必须用恢复的ibd文件替换空表的.ibd文件。所以我们需要丢弃表空间:

ALTER TABLE answers DISCARD TABLESPACE; 
ALTER TABLE categories DISCARD TABLESPACE; 
ALTER TABLE inbox DISCARD TABLESPACE; 
ALTER TABLE questions DISCARD TABLESPACE; 
ALTER TABLE users DISCARD TABLESPACE; 

5)替换数据文件夹中的.ibd个文件,并为该文件定义用户和组:

cp *.ibd /var/lib/mysql/soru_sor_recover
chown -R mysql:mysql /var/lib/mysql/soru_sor_recover/*.ibd

6)重新启动mysql:

/etc/init.d/mysql restart

7)启用表空间,转到mysql控制台:

ALTER TABLE answers IMPORT TABLESPACE; 
ALTER TABLE categories IMPORT TABLESPACE; 
ALTER TABLE inbox IMPORT TABLESPACE; 
ALTER TABLE questions IMPORT TABLESPACE; 
ALTER TABLE users IMPORT TABLESPACE; 

文档化的原始来源is here