MySQL MyISAM表結(jié)構(gòu)的恢復(fù)
MySQL MyISAM表結(jié)構(gòu)的恢復(fù)方法是怎樣的呢?這是很多人都提過(guò)的問題,下面就為您詳細(xì)介紹MySQL MyISAM表結(jié)構(gòu)的恢復(fù)方法,供您參考。
MySQL MyISAM類型的表恢復(fù)相對(duì)比較簡(jiǎn)單。
同樣先假定需要恢復(fù)的表的FRM文件為test_myisam.frm,表結(jié)構(gòu)為
- mysql> create table test_myisam
- -> (A int(11) default NULL,
- -> B varchar(30) default NULL,
- -> C date default NULL) engine=myisam;
- Query OK, 0 rows affected (0.05 sec)
恢復(fù)過(guò)程如下:
1. 直接將test_myisam.frm拷貝到正常數(shù)據(jù)庫(kù)對(duì)應(yīng)的數(shù)據(jù)目錄下。這時(shí)測(cè)試
- mysql> show tables;
- +--------------+
- | Tables_in_aa |
- +--------------+
- | test_innodb |
- | test_myisam |
- +--------------+
- 3 rows in set (0.00 sec)
- mysql> desc test_myisam;
- ERROR 1017 (HY000): Can't find file: 'test_myisam' (errno: 2)
發(fā)現(xiàn)只能通過(guò)show tables命令看見表名,但是表結(jié)構(gòu)還是沒有恢復(fù),desc命令報(bào)錯(cuò)。
2. 在與test_myisam.frm同一目錄建立以下2個(gè)文件,文件內(nèi)容可以為空:
test_myisam.MYD test_myisam.MYI
3. 在MYSQL命令行使用MYSQL本身的數(shù)據(jù)表恢復(fù)命令repair命令恢復(fù)表,如下:
- mysql> repair table test_myisam USE_FRM;
- +-----------------+--------+----------+----------+
- | Table | Op | Msg_type | Msg_text |
- +-----------------+--------+----------+----------+
- | aa.test_myisam | repair | status | OK |
- +-----------------+--------+----------+----------+
- 1 row in set (0.00 sec)
根據(jù)結(jié)果可以知道,恢復(fù)命令執(zhí)行成功,下邊用desc命令測(cè)試下:
- mysql> desc test_myisam;
- +-------+-------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +-------+-------------+------+-----+---------+-------+
- | A | int(11) | YES | | NULL | |
- | B | varchar(30) | YES | | NULL | |
- | C | date | YES | | NULL | |
- +-------+-------------+------+-----+---------+-------+
- 3 rows in set (0.02 sec)
果然恢復(fù)成功了。
【編輯推薦】
MySQL左連接查詢經(jīng)驗(yàn)總結(jié)