減少此類問題發生的辦法就是盡量減少服務器無故斷電
關閉服務器時
最後先手動關閉mysql數據庫
下面看看這個問題
Can
t open file:
×××
MYI
(errno:
)
這個錯誤一般就是你的數據庫表文件損壞造成的
造成的原因大概是你把數據庫文件挪來挪去的結果
當然不排除其他原因啊
具體數據庫出現錯誤的提示代碼是:
Invalid SQL: ……
MySQL 錯誤!:
(Can
t open file:
×××
MYI
(errno:
))
解決這個問題有多種方案
如果你的數據庫可以遠程鏈接或者你可以連接到你的遠程服務器桌面
並且你的服務器系統剛好是Windows的
那麼你可以
運行
>cmd
然後
mysql –h 主機地址 –u 用戶名 –p
然後輸入密碼
連接數據庫
Use 數據庫名稱
然後 輸入
reapair table 出錯的表名稱
回車
這樣修復一下就可以了
參考圖片如下
第二種方案假設你只能運行PHP代碼那麼也很簡單寫一個php文件鏈接上數據庫把這段代碼
Reapair table `表名`
像發送 select * ……一樣發送給mysql也是可以的
第三種方案可簡單了打開你的myphpadmin選中Cant open file:後面同名的表有個下拉菜單選中項選擇修復如圖
就ok了
如果你的數據庫主機就你一個人用並且你還能控制的話建議你用Mysql自帶的修復工具myisamchkexe進行修復操作如下
修復前將mysql服務停止
如果是Win主機打開命令行方式然後進入到mysql的/bin目錄
執行myisamchk r 數據庫所在路徑\*MYI
如果是類Unix主機直接使用myisamchk r 數據庫目錄\*MYI
其它參考
Mysql有的時候因為掉電或者其他原因導致數據庫損壞錯信息如下
MySql: Cant open file: sdb_sessionsMYI (errno: )
For more information see Help and Support Center at
我們可以使用mysql自帶的mysqlcheck命令來快速修復所有的數據庫或者特定的數據庫;例如
檢查優化並修復所有的數據庫用:
# mysqlcheck A o r p
Enter password:
guestbooksimpgb_avatars OK
guestbooksimpgb_bad_words OK
guestbooksimpgb_banlist OK
guestbooksimpgb_data OK
mysqlcheck語法/html/Program/Mssql//l
修復指定的數據庫用
# mysqlcheck A o r Database_NAME p
IXDBANET社區論壇
另外如果只是對某個表進行修復可以用myisamchk或isamchk
其中myisamchk適用於MYISAM類型的數據表而isamchk適用於ISAM類型的數據表這兩條命令的主要參數相同一般新的系統都使用MYISAM作為缺省的數據表類型這裡以myisamchk為例子進行說明當發現某個數據表出現問題時可以使用
myisamchk tablenameMYI
進行檢測如果需要修復的話可以使用
myisamchk of tablenameMYI
關於myisamchk的詳細參數說明可以參見它的使用幫助需要注意的時在進行修改時必須確保MySQL服務器沒有訪問這個數據表保險的情況下是最好在進行檢測時把MySQL服務器Shutdown掉
另外可以把下面的命令放在你的rclocal裡面啟動MySQL服務器前
[ x /tmp/mysqlsock ] && /pathtochk/myisamchk of /DATA_DIR/*/*MYI
其中的/tmp/mysqlsock是MySQL監聽的Sock文件位置對於使用RPM安裝的用戶應該是/var/lib/mysql /mysqlsock對於使用源碼安裝則是/tmp/mysqlsock可以根據自己的實際情況進行變更而pathtochk則是 myisamchk所在的位置DATA_DIR是你的MySQL數據庫存放的位置
From:http://tw.wingwit.com/Article/program/MySQL/201405/30864.html