一張損壞的表的癥狀通常是查詢意外中斷并且你能看到例如這些錯誤: ◆ “tbl_name.frm”被鎖定不能改變。 ◆ 不能找到文件“tbl_name.MYI”(Errcode :### )。 ◆ 從表處理器的得到錯誤###(此時,錯誤135是一個例外)。 ◆ 意外的文件結(jié)束。 ◆ 記錄文件被毀壞。 在這些情況下,你必須修復表。表的修復是一項非常困難的工作,很多情況下令人束手無策。然而,有一些常規(guī)的知道思想和過程,可以遵循它們來增加修正表的機會。通常,開始是可以用最快的修復方法,看看能否袖珍故障。如果發(fā)現(xiàn)不成功,可以逐步升級到更徹底的但更慢的修復方法。如果仍舊難以修復,就應該從備份中恢復了。在上一章已經(jīng)詳細介紹了這一部分內(nèi)容。 簡單安全的修復 為了修復一個表執(zhí)行下列步驟: ◆ 首先,用--recover,-r選項修正表,并且用--quick,-q選項,來只根據(jù)索引文件的內(nèi)容進行恢復。這樣不接觸數(shù)據(jù)文件來修復索引文件。(-r意味著“恢復模式”) myisamchk -r -q tbl_nameisamchk -r -q tbl_name ◆ 如果問題仍舊存在,則忽略--quick選項,允許修復程序修改數(shù)據(jù)文件,因為這可能存在問題。下面的命令將從數(shù)據(jù)文件中刪除不正確的記錄和已被刪除的記錄并重建索引文件: myisamchk -r tbl_nameisamchk -r tbl_name ◆ 如果前面的步驟失敗,使用。安全恢復模式使用一個老的恢復方法,處理常規(guī)恢復模式不行的少數(shù)情況(但是更慢)。 myisamchk --safe-recover tbl_nameisamchk --safe-recover tbl_name困難的修理如果在索引文件的第一個16K塊被破壞,或包含不正確的信息,或如果索引文件丟失,你只應該到這個階段 。在這種情況下,創(chuàng)建一個新的索引文件是必要的。按如下這樣的步驟做: ◆ 定位到包含崩潰表的數(shù)據(jù)庫目錄中 ◆ 把數(shù)據(jù)文件移更安全的地方。
10年積累的網(wǎng)站制作、成都網(wǎng)站制作經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先做網(wǎng)站設計后付款的網(wǎng)站建設流程,更有鄭州免費網(wǎng)站建設讓你可以放心的選擇與我們合作。
方法:進入Mysql的Bin目錄:C:\Program Files\MySQL\MySQL Server 4.1\bin
運行:mysqlcheck -A -o -r -uroot -p123
注意,將123改成你自己的root用戶密碼
希望能解決您的問題。
有兩種方法,一種方法使用mysql的check table和repair table 的sql語句,另一種方法是使用MySQL提供的多個myisamchk, isamchk數(shù)據(jù)檢測恢復工具。
前者使用起來比較簡便。推薦使用。
1、check table 和 repair table 登陸mysql 終端: mysql -uxxxxx -p dbname check table tabTest;
如果出現(xiàn)的結(jié)果說Status是OK,則不用修復,如果有Error,可以用: repair table tabTest; 進行修復,修復之后可以在用check table命令來進行檢查。
在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk 其中myisamchk適用于MYISAM類型的數(shù)據(jù)表,而isamchk適用于ISAM類型的數(shù)據(jù)表。
這兩條命令的主要參數(shù)相同,一般新的系統(tǒng)都使用MYISAM作為缺省的數(shù)據(jù)表類型,這里以myisamchk為例子進行說明。
當發(fā)現(xiàn)某個數(shù)據(jù)表出現(xiàn)問題時可以使用: myisamchk tablename.MYI 進行檢測,如果需要修復的話,可以使用: myisamchk -of tablename.MYI 關(guān)于myisamchk的詳細參數(shù)說明,可以參見它的使用幫助。
需要注意的時在進行修改時必須確保MySQL服務器沒有訪問這個數(shù)據(jù)表,保險的情況下是最好在進行檢測時把MySQL服務器Shutdown掉。
2、另外可以把下面的命令放在你的rc.local里面啟動MySQL服務器前: [ -x /tmp/mysql.sock ] /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI 。
其中的/tmp/mysql.sock是MySQL監(jiān)聽的Sock文件位置,對于使用RPM安裝的用戶應該是/var/lib/mysql/mysql.sock,對于使用源碼安裝則是/tmp/mysql.sock可以根據(jù)自己的實際情況進行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL數(shù)據(jù)庫存放的位置。
需要注意的是,如果你打算把這條命令放在你的rc.local里面,必須確認在執(zhí)行這條指令時MySQL服務器必須沒有啟動!
最后檢測修復所有數(shù)據(jù)庫(表)。
mysql數(shù)據(jù)庫恢復方法:
方法一:
命令恢復數(shù)據(jù)庫:
mysql -u root –password=root密碼 數(shù)據(jù)庫名 備份文件.sql
方法二:
第一步:用管理員權(quán)限登錄并進入后臺管理界面,點“數(shù)據(jù)庫-資料恢復”。
第二步:在數(shù)據(jù)恢復設置中選擇“從本地文件”進行恢復,然后通過右邊的“瀏覽”按鈕找到之前保存下來的.sql文件。
第三步:點“提交”按鈕后將出現(xiàn)詢問“分卷數(shù)據(jù)成功導入數(shù)據(jù)庫,需要自動導入本次其他的備份嗎?”一般繼續(xù)點“確定”按鈕即可。之后的數(shù)據(jù)庫文件就完全導入到當前網(wǎng)站了。這時出現(xiàn)再次要求輸入管理員帳號的提示。訪問網(wǎng)站地址時也會看到所有信息都恢復到備份數(shù)據(jù)庫時的內(nèi)容了。
小提示:
不管采取哪種方式備份和恢復數(shù)據(jù)庫,一定要注意備份和恢復時使用的版本要相同,甚至是語言種類也要一致,否則會存在亂碼的問題。
修復MYSQL數(shù)據(jù)庫因斷電造成的數(shù)據(jù)損壞
在使用MySQL數(shù)據(jù)庫的時候,都碰到過因斷電造成數(shù)據(jù)庫損壞的情況,大家都知道,斷電或非正常關(guān)機是導致MySQL數(shù)據(jù)庫出現(xiàn)錯誤最常見的原因,如何恢復MySQL數(shù)據(jù)庫是大家都非常頭痛的問題。目前有方法可以幫助大家恢復損壞的MySQL數(shù)據(jù)庫嗎?
當用戶出現(xiàn)斷電造成的MySQL數(shù)據(jù)庫丟失損壞時,如果能進入MySQL軟件,但是提示錯誤信息,用戶可以通過“系統(tǒng)維護”—“數(shù)據(jù)庫壓縮修復”,壓縮下數(shù)據(jù)庫(有些軟件在“系統(tǒng)設置”—“系統(tǒng)維護”—“數(shù)據(jù)庫備份\恢復”中),這種方法只適合一小部分的數(shù)據(jù)庫故障修復,功能性并不高。
現(xiàn)在網(wǎng)絡上有兩種比較推薦使用的MySQL數(shù)據(jù)庫恢復方法,一種方法使用MySQL(和PHP搭配之最佳組合)的check
table和repair
table
的sql語句,另一種方法是使用MySQL(和PHP搭配之最佳組合)提供的多個myisamchk,
isamchk數(shù)據(jù)檢測恢復工具。在很多用戶看來,這兩個方法都比較復雜,并不適合大多數(shù)的用戶使用。另外,這兩種方法并不能有效的恢復MySQL數(shù)據(jù)庫,可能還會造成數(shù)據(jù)庫被進一步損壞,造成大家無法挽回的損失。根據(jù)以上幾個原因,這兩種MySQL數(shù)據(jù)庫恢復方法并不建議大家使用。
。
數(shù)據(jù)庫被損壞分以下幾種情況:
1、嚴重損壞
2、輕度損壞
3、有些表被損壞或有些表的部分記錄被損壞