无法访问 MySQL 数据
Not being able to reach MySQL data
我一直在使用 AppServ,其中包括 MySQL、PHP、Apache24 和 phpMyAdmin 功能。
有一天,我不小心从我的计算机上卸载了我的 AppServ 服务,我不得不重新安装它。一切正常,直到我看到我的数据库无法像以前那样正常工作。
我无法访问我的数据,事故发生前我创建的网站也是如此。当我转到我的 phpMyAdmin 时,我可以清楚地看到我制作的结构,但看不到它们的内容,这就是问题所在。事实上,当我在目录中看到它们时,它们都站在那里。
提前致谢。
注意: AppServ 卸载过程不会删除您自己的数据。
要从 .frm
恢复数据库并从 .ibd
恢复内容,您必须执行以下操作:
1) 创建临时数据库以避免突然使用其他数据库。
CREATE DATABASE soru_sor_recover;
2) 从 .frm
文件生成 CREATE TABLE
转储(您需要安装 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) 使用一些图形用户界面或仅通过终端导入 create_table.txt
:
mysql -u root -p soru_sor_recover < create_table.txx
4) 现在我们有 tables 但它们是空的。所以我们必须用恢复的 ibd 文件替换空 tables 的 .ibd
文件。所以我们需要丢弃 tablespace:
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) 启用 table 空格,转到 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
我一直在使用 AppServ,其中包括 MySQL、PHP、Apache24 和 phpMyAdmin 功能。
有一天,我不小心从我的计算机上卸载了我的 AppServ 服务,我不得不重新安装它。一切正常,直到我看到我的数据库无法像以前那样正常工作。
我无法访问我的数据,事故发生前我创建的网站也是如此。当我转到我的 phpMyAdmin 时,我可以清楚地看到我制作的结构,但看不到它们的内容,这就是问题所在。事实上,当我在目录中看到它们时,它们都站在那里。
提前致谢。
注意: AppServ 卸载过程不会删除您自己的数据。
要从 .frm
恢复数据库并从 .ibd
恢复内容,您必须执行以下操作:
1) 创建临时数据库以避免突然使用其他数据库。
CREATE DATABASE soru_sor_recover;
2) 从 .frm
文件生成 CREATE TABLE
转储(您需要安装 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) 使用一些图形用户界面或仅通过终端导入 create_table.txt
:
mysql -u root -p soru_sor_recover < create_table.txx
4) 现在我们有 tables 但它们是空的。所以我们必须用恢复的 ibd 文件替换空 tables 的 .ibd
文件。所以我们需要丢弃 tablespace:
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) 启用 table 空格,转到 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