通過替換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通過frm、idb檔案恢復資料MySql
- mysql 從 frm 檔案恢復 table 表結構的3種方法MySql
- python 檔案操作(二) 替換性修改檔案內容Python
- 資料恢復新姿勢——通過ibd和frm檔案恢復資料資料恢復
- offer通過--4替換空格-2
- puppet替換檔案中的string
- vim內替換檔案內容
- linux替換jar裡面的class檔案LinuxJAR
- Aspose.Words for .NET如何替換或修改超連結
- 網站程式碼修改替換流程圖,輕鬆掌握程式碼修改替換流程網站流程圖
- 同名檔案替換怎麼恢復,恢復同名檔案
- 表`t`的INODE結構檔案分析
- ViewPager(通過反射修改viewpager切換速度)Viewpager反射
- 使用PHPWord對Word檔案做模板替換PHP
- sed 原地替換檔案時遇到的趣事
- grep、sed批量替換檔案內容shell
- 表`t`的XDES Entry結構檔案分析
- oracle sqldeveloper下 自定義Snippets檔案的替換OracleSQLDeveloper
- fastapi 使用本地靜態檔案替換 swagger cdnASTAPISwagger
- 正則替換 修改字元 去除空格字元
- linux批次find查詢檔案並批次替換覆蓋該檔案Linux
- 檔案替換後怎麼恢復,恢復被覆蓋的檔案
- 使用sed 命令查詢和替換檔案中的字串的方法總結字串
- 轉換Linux 檔案編碼方式Linux
- .Net Core 通過配置檔案(appsetting.json)修改Kestrel啟動埠APPJSON
- 類檔案結構_class類檔案的的結構
- 教程:如何通過DLA實現資料檔案格式轉換
- 替換掉的檔案怎麼恢復,兩個方法還原檔案
- EOF 如何防止多行寫入檔案變數替換變數
- 網站圖修改後怎麼替換網站
- 如何修改Mac檔案預設開啟方式?Mac
- jmeter基礎之目錄結構解析及配置檔案修改JMeter
- MySQL修改表結構到底會不會鎖表?MySql
- k8s Java 專案替換 jar 中的 class 檔案K8SJavaJAR
- 雲伺服器恢復MySQL frm資料檔案伺服器MySql
- 用python批量替換MD檔案中的圖片地址Python
- SSM整合之使用配置類替換xml配置檔案(2)SSMXML
- 使用shell指令碼替換csv檔案中的資料指令碼
- consul系列文章02---替換掉.netcore的配置檔案NetCore