MYSQL錯誤:Can’t open file: ‘×××.MYI’
2022-10-09 20:09:53   來源:   評論:0 點擊:

這個錯誤是典型的mysql表受損造成的,解決的辦法就是修復(fù)表,這個問題也是mysql經(jīng)常容易出現(xiàn)的,mysql表和索引損壞的幾率很大,但是修復(fù)也很方便,減少此類問題發(fā)生的辦法就是盡量減少服務(wù)器無故斷電,關(guān)閉服務(wù)器時,最后先手動關(guān)閉mysql數(shù)據(jù)庫。

下面看看這個問題:


Can’t open file: ‘×××.MYI’ (errno: 145),這個錯誤一般就是你的數(shù)據(jù)庫表文件損壞造成的,造成的原因大概是你把數(shù)據(jù)庫文件挪來挪去的結(jié)果,當(dāng)然不排除其他原因啊。

具體數(shù)據(jù)庫出現(xiàn)錯誤的提示代碼是:
 Invalid SQL: ……

 

這個錯誤是典型的mysql表受損造成的,解決的辦法就是修復(fù)表,這個問題也是mysql經(jīng)常容易出現(xiàn)的,mysql表和索引損壞的幾率很大,但是修復(fù)也很方便,減少此類問題發(fā)生的辦法就是盡量減少服務(wù)器無故斷電,關(guān)閉服務(wù)器時,最后先手動關(guān)閉mysql數(shù)據(jù)庫。

下面看看這個問題:


Can’t open file: ‘×××.MYI’ (errno: 145),這個錯誤一般就是你的數(shù)據(jù)庫表文件損壞造成的,造成的原因大概是你把數(shù)據(jù)庫文件挪來挪去的結(jié)果,當(dāng)然不排除其他原因啊。

具體數(shù)據(jù)庫出現(xiàn)錯誤的提示代碼是:
 Invalid SQL: ……
MySQL 錯誤!: 1016 (Can’t open file: ‘×××.MYI’ (errno: 145))

解決這個問題有多種方案,如果你的數(shù)據(jù)庫可以遠(yuǎn)程鏈接或者你可以連接到你的遠(yuǎn)程服務(wù)器桌面,并且你的服務(wù)器系統(tǒng)剛好是Windows的,那么你可以:

運行->cmd

然后:mysql –h 主機地址 –u 用戶名 –p
然后輸入密碼,連接數(shù)據(jù)庫;
Use 數(shù)據(jù)庫名稱;
然后 輸入:reapair table 出錯的表名稱,回車,這樣修復(fù)一下就可以了,參考圖片如下:

image002

第二種方案,假設(shè)你只能運行PHP代碼,那么也很簡單,寫一個php文件,鏈接上數(shù)據(jù)庫,把這段代碼:
Reapair table `表名`,
像發(fā)送 “select * ……”一樣發(fā)送給mysql,也是可以的;

第三種方案,可簡單了,打開你的myphpadmin,選中Can’t open file:后面同名的表,有個下拉菜單“選中項”,選擇“修復(fù)”如圖:

image004

就ok了。

如果你的數(shù)據(jù)庫主機就你一個人用,并且你還能控制的話,建議你用Mysql自帶的修復(fù)工具myisamchk.exe進行修復(fù),操作如下:

修復(fù)前將mysql服務(wù)停止。
如果是Win主機,打開命令行方式,然后進入到mysql的/bin目錄。
執(zhí)行myisamchk -r  數(shù)據(jù)庫所在路徑\*.MYI
如果是類Unix主機,直接使用myisamchk -r  數(shù)據(jù)庫目錄\*.MYI

其它參考:

Mysql有的時候因為掉電或者其他原因?qū)е聰?shù)據(jù)庫損壞,錯信息如下:

MySql: Can't open file: 'sdb_sessions.MYI'. (errno: 145)

For more information, see Help and Support Center at

我們可以使用mysql自帶的mysqlcheck命令來快速修復(fù)所有的數(shù)據(jù)庫或者特定的數(shù)據(jù)庫;例如

檢查優(yōu)化并修復(fù)所有的數(shù)據(jù)庫用:

# mysqlcheck -A -o -r -p

Enter password:

guestbook.simpgb_avatars OK

guestbook.simpgb_bad_words OK

guestbook.simpgb_banlist OK

guestbook.simpgb_data OK

......

......

......

mysqlcheck語法/html/Program/Mssql/200711/130.html

修復(fù)指定的數(shù)據(jù)庫用

# mysqlcheck -A -o -r Database_NAME -p


 

另外如果只是對某個表進行修復(fù)可以用:myisamchk或isamchk
其中myisamchk適用于MYISAM類型的數(shù)據(jù)表,而isamchk適用于ISAM類型的數(shù)據(jù)表。這兩條命令的主要參數(shù)相同,一般新的系統(tǒng)都使用MYISAM作為缺省的數(shù)據(jù)表類型,這里以myisamchk為例子進行說明。當(dāng)發(fā)現(xiàn)某個數(shù)據(jù)表出現(xiàn)問題時可以使用:
myisamchk tablename.MYI
進行檢測,如果需要修復(fù)的話,可以使用:
myisamchk -of tablename.MYI
關(guān)于myisamchk的詳細(xì)參數(shù)說明,可以參見它的使用幫助。需要注意的時在進行修改時必須確保MySQL服務(wù)器沒有訪問這個數(shù)據(jù)表,保險的情況下是最好在進行檢測時把MySQL服務(wù)器Shutdown掉。
另外可以把下面的命令放在你的rc.local里面啟動MySQL服務(wù)器前:
[ -x /tmp/mysql.sock ] && /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL監(jiān)聽的Sock文件位置,對于使用RPM安裝的用戶應(yīng)該是/var/lib/mysql /mysql.sock,對于使用源碼安裝則是/tmp/mysql.sock可以根據(jù)自己的實際情況進行變更,而pathtochk則是 myisamchk所在的位置,DATA_DIR是你的MySQL數(shù)據(jù)庫存放的位置。

相關(guān)熱詞搜索:MySQL Errno:145 MySQL Errno:126

上一篇:MySQL停止和啟動服務(wù)命令
下一篇:最后一頁

分享到: 收藏
評論排行
在線咨詢
0