2014-03-31 67 views
5

情況:我有一個帶有104個表的MySQL數據庫,在Windows 7的本地XAMPP上運行。所有的表都有InnoDB引擎。 XAMPP MySQL正在以windows服務運行。作爲前端我有PHP(CodeIgniter)。如何在mysql中修復或刪除/創建損壞的表?

問題:昨天晚上和往常一樣,我停止了關於該項目的工作,並正常關閉窗戶。今天早上,我在瀏覽器中收到錯誤table MY_TALBE does not exists。控制檯上的show tables顯示錶名,但desc MY_TABLEselect * from MY_TABLE表示unknown table。我試過create table MY_TABLE(...),但是我的錯誤是table MY_TABLE already exists,所以我試了drop table MY_TABLE但是它說Unknown table MY_TABLE!我試圖mysqlcheck.exe進行修復和檢查,他們都失敗了,但在此之後,show tables不再顯示錶名稱。我需要提到我沒有更改/移動/刪除/重命名任何mysql文件。我也不能刪除數據庫:

mysql> drop database MY_DB; 
No connection. Trying to reconnect... 
Connection id: 1 
Current database: *** NONE *** 

問:是否有可能恢復/修復MY_TABLE,或者至少如何刪除並重新創建它(不刪除數據庫並重新crteating它) ?

+0

檢查你的備份文件夾是否存在於你的mysql位置,它可能有自動備份 – Divya

+0

這個URL可能會有幫助:http://www.thegeekstuff.com/2011/12/mysqlcheck/ – ursitesion

+0

@ A5l-lE5有一個備份文件夾,但我的數據庫沒有文件。 – Musa

回答

1

the same question上dba.stackexchnage.com之後,我發現我的解決方案如下:

已損壞的表不可修復,也不可恢復。唯一的方法是健康地備份數據庫和損壞表的數據庫的健康表,然後從數據庫文件中清除MySQL的基礎結構,即從磁盤刪除文件,然後重新啓動,即恢復所有數據庫並表並且還重新創建損壞的表。另外,鏈接的文章提到可以恢復損壞的表的一些數據。

還有一些工具如Percona可用於恢復損壞的InnoDB表,但它不適用於Windows。

請參考上面的鏈接瞭解全部細節。