mysql innodb表空間被佔用,同名表無法創建或導入

轉載說明:最近一次mysql5.7 INNODB表損壞,引起故障。摸索了很久,才根據下面的文章排除故障。特別注意操作步驟:先備份數據(從沒損壞的從庫導出sql),然後在執行drop table xxx,再將.ibd文件移到別處,再重新建表恢復數據。

刪除mysql表(用的是innodb)時沒有用drop table命令,只是簡單刪除表目錄,,這導致表空間還存在,這樣就不可以加同名表進去。

當要重新導入新的同名表或者創建新的同名表時,會提示錯誤

Error : Tablespace for table '`database`.`temp`' exists. Please DISCARD the tablespace before IMPORT.


然而,我用

DROP TABLE temp;

ALTER TABLE temp DISCARD TABLESPACE;


仍然提示:

Error : Unknown table 'database.temp'

Error : Table 'database.temp' doesn't exist


解決方法:去mysql數據目錄那裏將對應的ibd文件移動到其他位置

$ ls /usr/local/homebrew/var/mysql/Mazda6


table1.frm

table1.idb

table2.frm

table2.ibd

table3.idb <- problem table, no table3.frm

table4.frm

table4.idb


$ mkdir /tmp/mysql_orphans

$ mv /usr/local/homebrew/var/mysql/Mazda6/table3.ibd /tmp/mysql_orphans/


這樣就可以導入要創建同名的表

來源:http://www.68idc.cn/help/jiabenmake/qita/2014042391325.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章