通過替換frm檔案方式修改表結構
版本:5.6.16
在自己的虛擬環境中,測試建立一個表,表結構如下:
mysql> drop table yoon_temp;
Query OK, 0 rows affected (0.09 sec)
mysql> show create table yoon\G
*************************** 1. row ***************************
Table: yoon
Create Table: CREATE TABLE `yoon` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
再建立一個相同的表結構,name varchar(30) 為30,並通過替換.frm來實現yoon表的欄位修改:
mysql> show create table yoon_temp\G
*************************** 1. row ***************************
Table: yoon_temp
Create Table: CREATE TABLE `yoon_temp` (
`id` int(11) DEFAULT NULL,
`name` varchar(30) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
不小心直接刪除yoon_temp.frm檔案,無法替換,在資料庫上刪除yoon_temp提示表不存在:
[root@hank-yoon yoon]# rm -rf yoon_temp.frm
mysql> show tables;
+----------------+
| Tables_in_yoon |
+----------------+
| yoon |
+----------------+
1 row in set (0.00 sec)
刪除表:
mysql> drop table yoon_temp;
ERROR 1051 (42S02): Unknown table 'yoon.yoon_temp'
重新建立表:
mysql> create table yoon_temp (id int,name varchar(30));
ERROR 1813 (HY000): Tablespace for table '`yoon`.`yoon_temp`' exists. Please DISCARD the tablespace before IMPORT.
mysql> alter table yoon_temp DISCARD tablespace;
ERROR 1146 (42S02): Table 'yoon.yoon_temp' doesn't exist
在目錄下通過yoon.frm拷貝建立yoon_temp.frm
[root@hank-yoon yoon]# cp yoon.frm yoon_temp.frm
[root@hank-yoon yoon]# chown mysql.mysql yoon_temp.frm
檢視錶:
mysql> show tables;
+----------------+
| Tables_in_yoon |
+----------------+
| yoon |
| yoon_temp |
+----------------+
2 rows in set (0.00 sec)
mysql> show create table yoon_temp\G
*************************** 1. row ***************************
Table: yoon_temp
Create Table: CREATE TABLE `yoon_temp` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
mysql> drop table yoon_temp;
Query OK, 0 rows affected (0.03 sec)
重新建立再測試:
mysql> create table yoon_temp (id int,name varchar(30));
Query OK, 0 rows affected (0.02 sec)
當表結構檔案不小心刪除時,可通過其他表結構來建立進行修復刪除,表結構要相同,欄位varcahr(xxx) xxx大小不同無所謂,也間接實現了通過替換frm的方式修改表結構。
在自己的虛擬環境中,測試建立一個表,表結構如下:
mysql> drop table yoon_temp;
Query OK, 0 rows affected (0.09 sec)
mysql> show create table yoon\G
*************************** 1. row ***************************
Table: yoon
Create Table: CREATE TABLE `yoon` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
再建立一個相同的表結構,name varchar(30) 為30,並通過替換.frm來實現yoon表的欄位修改:
mysql> show create table yoon_temp\G
*************************** 1. row ***************************
Table: yoon_temp
Create Table: CREATE TABLE `yoon_temp` (
`id` int(11) DEFAULT NULL,
`name` varchar(30) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
不小心直接刪除yoon_temp.frm檔案,無法替換,在資料庫上刪除yoon_temp提示表不存在:
[root@hank-yoon yoon]# rm -rf yoon_temp.frm
mysql> show tables;
+----------------+
| Tables_in_yoon |
+----------------+
| yoon |
+----------------+
1 row in set (0.00 sec)
刪除表:
mysql> drop table yoon_temp;
ERROR 1051 (42S02): Unknown table 'yoon.yoon_temp'
重新建立表:
mysql> create table yoon_temp (id int,name varchar(30));
ERROR 1813 (HY000): Tablespace for table '`yoon`.`yoon_temp`' exists. Please DISCARD the tablespace before IMPORT.
mysql> alter table yoon_temp DISCARD tablespace;
ERROR 1146 (42S02): Table 'yoon.yoon_temp' doesn't exist
在目錄下通過yoon.frm拷貝建立yoon_temp.frm
[root@hank-yoon yoon]# cp yoon.frm yoon_temp.frm
[root@hank-yoon yoon]# chown mysql.mysql yoon_temp.frm
檢視錶:
mysql> show tables;
+----------------+
| Tables_in_yoon |
+----------------+
| yoon |
| yoon_temp |
+----------------+
2 rows in set (0.00 sec)
mysql> show create table yoon_temp\G
*************************** 1. row ***************************
Table: yoon_temp
Create Table: CREATE TABLE `yoon_temp` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
mysql> drop table yoon_temp;
Query OK, 0 rows affected (0.03 sec)
重新建立再測試:
mysql> create table yoon_temp (id int,name varchar(30));
Query OK, 0 rows affected (0.02 sec)
當表結構檔案不小心刪除時,可通過其他表結構來建立進行修復刪除,表結構要相同,欄位varcahr(xxx) xxx大小不同無所謂,也間接實現了通過替換frm的方式修改表結構。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28939273/viewspace-1868545/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Mysql】Mysql從frm檔案裡恢復表結構MySql
- Mysql如何讀.frm結尾的表結構定義檔案MySql
- perl命令:批量修改替換檔案
- 通過修改 LayoutInflater,全域性替換字型!!!
- 批量修改檔名 與 批量檔案字元替換字元
- mysql 從 frm 檔案恢復 table 表結構的3種方法MySql
- mysql通過frm、idb檔案恢復資料MySql
- python 檔案操作(二) 替換性修改檔案內容Python
- 通過修改jdbc配置檔案方式修改Weblogic資料來源密碼JDBCWeb密碼
- 資料恢復新姿勢——通過ibd和frm檔案恢復資料資料恢復
- vim內替換檔案內容
- Oracle通過Sqlplus結合Shell指令碼方式生成Excel檔案OracleSQL指令碼Excel
- puppet替換檔案中的string
- linux_perl批次替換檔案Linux
- javascript構造可以上傳檔案的form表單(透過js修改enctype)JavaScriptORMJS
- ViewPager(通過反射修改viewpager切換速度)Viewpager反射
- 表`t`的INODE結構檔案分析
- PE檔案結構(四) 輸出表
- 同名檔案替換怎麼恢復,恢復同名檔案
- WebSphere 6.1 程式 更新檔案 替換或新增單個檔案Web
- Oracle表結構轉換SqlSERVER表結構 指令碼OracleSQLServer指令碼
- 使用PHPWord對Word檔案做模板替換PHP
- grep、sed批量替換檔案內容shell
- linux替換jar裡面的class檔案LinuxJAR
- sed 原地替換檔案時遇到的趣事
- 替換文字檔案中指定的內容
- mysql的正則替換方式MySql
- 通過配置檔案來修改WAS控制檯Session過期時間的方法Session
- PE檔案結構(二) 區塊,檔案偏移與RVA轉換
- 正則替換 修改字元 去除空格字元
- ThinkPHP修改專案結構PHP
- oracle sqldeveloper下 自定義Snippets檔案的替換OracleSQLDeveloper
- python 小程式,替換檔案中的字串Python字串
- linux下批次替換檔案內容(摘)Linux
- 使用sed 命令查詢和替換檔案中的字串的方法總結字串
- MySQL 5.6.26 通過frm & ibd 恢復資料過程MySql
- 檔案替換後怎麼恢復,恢復被覆蓋的檔案
- 教程:如何通過DLA實現資料檔案格式轉換