innodb、myisam通过frm文件恢复表结构
时间:2010-08-11 来源:shawn53
MySQL数据库中常用的两中引擎:
有时候我们对数据库升级或者是迁移的时候,不小心导致数据结构的破坏。
mysql> desc tempinnodb;
ERROR 1146 (42S02): Table 'cmcchr.tempinnodb' doesn't exist
我们从自己以前的数据库拷贝过来的数据竟然提示不存在此表。这种情况其实是可以恢复的,下面来详细看看
Innodb表结构的恢复: 创建一个新的库; create database cmcchr charset utf8;
use cmcchr;
create table tempinnodb (id int(11) not null) engine=innodb charset utf8; //这条语句中的engine是必须使用innodb引擎,因为我们恢复的是innodb引擎,设定相应的字符集和以前的表一致。
ok,到现在为你在你的data文件目录中的cmcchr中找到有一个tempinnodb.frm的文件,比如说你以前的库中要恢复的也是一个叫tempinnodb.frm的文件,你只需要把tempinnodb.frm文件拷贝到cmcchr中覆盖,就可以恢复其表结构。
myisam表结构的恢复
Innodb表结构的恢复: 创建一个新的库; create database cmcchr charset utf8;
use cmcchr;
create table tempinnodb (id int(11) not null) engine=innodb charset utf8; //这条语句中的engine是必须使用innodb引擎,因为我们恢复的是innodb引擎,设定相应的字符集和以前的表一致。
ok,到现在为你在你的data文件目录中的cmcchr中找到有一个tempinnodb.frm的文件,比如说你以前的库中要恢复的也是一个叫tempinnodb.frm的文件,你只需要把tempinnodb.frm文件拷贝到cmcchr中覆盖,就可以恢复其表结构。
myisam表结构的恢复
mysql> USE tmp; mysql> SHOW CREATE TABLE test; ERROR 1017 (HY000): Can't find file: 'test' (errno: 2)
|
mysql> repair TABLE test USE_FRM; +------------------+--------+----------+----------+ | TABLE | Op | Msg_type | Msg_text | +------------------+--------+----------+----------+ | test.test_myisam | repair | STATUS | OK | +------------------+--------+----------+----------+ 1 row IN SET (0.00 sec) mysql> SHOW CREATE TABLE test \G; *************************** 1. row ********** TABLE: test CREATE TABLE: CREATE TABLE `test` ( `dd` varchar(1) NOT NULL, `cc` varchar(1) NOT NULL ) ENGINE=myisam DEFAULT CHARSET=utf8 1 row IN SET (0.00 sec) ERROR: No query specified mysql> INSERT INTO test (dd,cc) value(1,2); Query OK, 1 row affected (0.00 sec) mysql> SELECT * FROM test; +------+ | dd | cc +------+ | 1 |2 +------+ 1 row IN SET (0.00 sec |
相关阅读 更多 +