登入mysql執行
repair table table_name 完畢
下面的方法試了不管用
--------------------------------------
具體報錯如下:
Table '.\Tablename\posts' is marked as crashed and should be repaired
提示說論壇的文章表posts被标記有問題,需要修複。我記得以前也出現過類似的問題,但是隻要點選Phpmyadmin上的repair按紐就自動修複了,但是這次很絕,什麼都沒有.于是趕快上網查找原因。最終将問題解決。解決方法如下:
找到mysql的安裝目錄的bin/myisamchk工具,在指令行中輸入:
myisamchk -c -r data/db_name/table_name.MYI
然後myisamchk 工具會幫助你恢複資料表的索引。好象也不用重新啟動mysql,問題就解決了。
問題分析:
1、
錯誤産生原因,有網友說是頻繁查詢和更新dede_archives表造成的索引錯誤,因為我的頁面沒有靜态生成,而是動态頁面,是以比較同意這種說法。
還有說法為是MYSQL資料庫因為某種原因而受到了損壞,如:資料庫伺服器突發性的斷電、在提在資料庫表提供服務時對表的原檔案進行某種操作都有可能導緻
MYSQL資料庫表被損壞而無法讀取資料。總之就是因為某些不可測的問題造成表的損壞。
2、問題解決辦法。
當你試圖修複一個被破壞的表的問題時,有三種修複類型。如果你得到一個錯誤資訊指出一個臨時檔案不能建立,删除資訊所指出的檔案并再試一次--這通常是上一次修複操作遺留下來的。
這三種修複方法如下所示:
% myisamchk --recover --quick /path/to/tblName
% myisamchk --recover /path/to/tblName
% myisamchk --safe-recover /path/to/tblName
第一種是最快的,用來修複最普通的問題;而最後一種是最慢的,用來修複一些其它方法所不能修複的問題。
檢查和修複MySQL資料檔案
如果上面的方法無法修複一個被損壞的表,在你放棄之前,你還可以試試下面這兩個技巧:
如
果你懷疑表的索引檔案(*.MYI)發生了不可修複的錯誤,甚至是丢失了這個檔案,你可以使用資料檔案(*.MYD)和資料格式檔案(*.frm)重新生
成它。首先制作一個資料檔案(tblName.MYD)的拷貝。重新開機你的MySQL服務并連接配接到這個服務上,使用下面的指令删除表的内容:
mysql> DELETE FROM tblName;
在
删除表的内容的同時,會建立一個新的索引檔案。登出并重新關閉服務,然後用你剛才儲存的資料檔案(tblName.MYD)覆寫新的(空)資料檔案。
最後,使用myisamchk執行标準的修複(上面的第二種方法),根據表的資料的内容和表的格式檔案重新生成索引資料。
如果你的表的
格式檔案(tblName.frm)丢失了或者是發生了不可修複的錯誤,但是你清楚如何使用相應的CREATE
TABLE語句來重新生成這張表,你可以重新生成一個新的.frm檔案并和你的資料檔案和索引檔案(如果索引檔案有問題,使用上面的方法重建一個新的)一
起使用。首先制作一個資料和索引檔案的拷貝,然後删除原來的檔案(删除資料目錄下有關這個表的所有記錄)。
啟動MySQL服務并使用當初的CREATE TABLE檔案建立一個新的表。新的.frm檔案應該可以正常工作了,但是最好你還是執行一下标準的修複(上面的第二種方法)。
為了不冒失修複,故采取保守做法,我們知道 MySQL 一個高效的管理工具便是 PhpMyAdmin,而在該管理軟體中就包含了對表的檢查、分析、修複、優化功能,比起網上提供的含糊指令行來說更安全更簡便。
<a href="http://goxia.maytide.net/ftpupfiles/MySQLismarkedascrashedandshouldberepaire_DDC6/image.png" target="_blank"></a>
通過實踐,在使用檢查表功能後确實發現了問題,之後使用修複功能進行了修複,回報結果每個表都已經 ok,再執行一次優化,重新測試通路網站終于恢複了正常。一場災難就此避免……
本文轉自 yntmdr 51CTO部落格,原文連結:http://blog.51cto.com/yntmdr/1878382,如需轉載請自行聯系原作者