MYSQL錯(cuò)誤:Can’t open file: ‘×××.MYI’ (errno: 145)修復(fù)方法
下面看看這個(gè)問題:
Can't open file: ‘×××.MYI' (errno: 145),這個(gè)錯(cuò)誤一般就是你的數(shù)據(jù)庫表文件損壞造成的,造成的原因大概是你把數(shù)據(jù)庫文件挪來挪去的結(jié)果,當(dāng)然不排除其他原因啊。
具體數(shù)據(jù)庫出現(xiàn)錯(cuò)誤的提示代碼是:
Invalid SQL: ……
MySQL 錯(cuò)誤!: 1016 (Can't open file: ‘×××.MYI' (errno: 145))
解決這個(gè)問題有多種方案,如果你的數(shù)據(jù)庫可以遠(yuǎn)程鏈接或者你可以連接到你的遠(yuǎn)程服務(wù)器桌面,并且你的服務(wù)器系統(tǒng)剛好是Windows的,那么你可以:
運(yùn)行->cmd
然后:mysql –h 主機(jī)地址 –u 用戶名 –p
然后輸入密碼,連接數(shù)據(jù)庫;
Use 數(shù)據(jù)庫名稱;
然后 輸入:reapair table 出錯(cuò)的表名稱,回車,這樣修復(fù)一下就可以了,參考圖片如下:

第二種方案,假設(shè)你只能運(yùn)行PHP代碼,那么也很簡單,寫一個(gè)php文件,鏈接上數(shù)據(jù)庫,把這段代碼:
Reapair table `表名`,
像發(fā)送 “select * ……”一樣發(fā)送給mysql,也是可以的;
第三種方案,可簡單了,打開你的myphpadmin,選中Can't open file:后面同名的表,有個(gè)下拉菜單“選中項(xiàng)”,選擇“修復(fù)”如圖:

就ok了。
如果你的數(shù)據(jù)庫主機(jī)就你一個(gè)人用,并且你還能控制的話,建議你用Mysql自帶的修復(fù)工具myisamchk.exe進(jìn)行修復(fù),操作如下:
修復(fù)前將mysql服務(wù)停止。
如果是Win主機(jī),打開命令行方式,然后進(jìn)入到mysql的/bin目錄。
執(zhí)行myisamchk -r 數(shù)據(jù)庫所在路徑\*.MYI
如果是類Unix主機(jī),直接使用myisamchk -r 數(shù)據(jù)庫目錄\*.MYI
其它參考:
Mysql有的時(shí)候因?yàn)榈綦娀蛘咂渌驅(qū)е聰?shù)據(jù)庫損壞,錯(cuò)信息如下:
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
IXDBA.NET社區(qū)論壇
另外如果只是對(duì)某個(gè)表進(jìn)行修復(fù)可以用:myisamchk或isamchk
其中myisamchk適用于MYISAM類型的數(shù)據(jù)表,而isamchk適用于ISAM類型的數(shù)據(jù)表。這兩條命令的主要參數(shù)相同,一般新的系統(tǒng)都使用MYISAM作為缺省的數(shù)據(jù)表類型,這里以myisamchk為例子進(jìn)行說明。當(dāng)發(fā)現(xiàn)某個(gè)數(shù)據(jù)表出現(xiàn)問題時(shí)可以使用:
myisamchk tablename.MYI
進(jìn)行檢測,如果需要修復(fù)的話,可以使用:
myisamchk -of tablename.MYI
關(guān)于myisamchk的詳細(xì)參數(shù)說明,可以參見它的使用幫助。需要注意的時(shí)在進(jìn)行修改時(shí)必須確保MySQL服務(wù)器沒有訪問這個(gè)數(shù)據(jù)表,保險(xiǎn)的情況下是最好在進(jìn)行檢測時(shí)把MySQL服務(wù)器Shutdown掉。
另外可以把下面的命令放在你的rc.local里面啟動(dòng)MySQL服務(wù)器前:
[ -x /tmp/mysql.sock ] && /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL監(jiān)聽的Sock文件位置,對(duì)于使用RPM安裝的用戶應(yīng)該是/var/lib/mysql /mysql.sock,對(duì)于使用源碼安裝則是/tmp/mysql.sock可以根據(jù)自己的實(shí)際情況進(jìn)行變更,而pathtochk則是 myisamchk所在的位置,DATA_DIR是你的MySQL數(shù)據(jù)庫存放的位置。
- mysql中優(yōu)化和修復(fù)數(shù)據(jù)庫工具mysqlcheck詳細(xì)介紹
- 使用shell檢查并修復(fù)mysql數(shù)據(jù)庫表的腳本
- mysql修復(fù)數(shù)據(jù)表的命令方法
- 檢查并修復(fù)mysql數(shù)據(jù)庫表的具體方法
- MySQL數(shù)據(jù)庫INNODB表損壞修復(fù)處理過程分享
- mysql 無法連接問題的定位和修復(fù)過程分享
- 快速修復(fù)損壞的MySQL數(shù)據(jù)庫
- mysql下優(yōu)化表和修復(fù)表命令使用說明(REPAIR TABLE和OPTIMIZE TABLE)
- MYSQL數(shù)據(jù)表損壞的原因分析和修復(fù)方法小結(jié)(推薦)
- MySQL數(shù)據(jù)表損壞的正確修復(fù)方案
- 修復(fù)mysql數(shù)據(jù)庫
- 教您修復(fù)mysql數(shù)據(jù)庫的方法
相關(guān)文章
MYSQL中有關(guān)SUM字段按條件統(tǒng)計(jì)使用IF函數(shù)(case)問題
MYSQL中SUM字段按條件統(tǒng)計(jì)使用IF函數(shù),具體實(shí)現(xiàn)代碼如下,感興趣的朋友不要錯(cuò)過2014-01-01
win10 mysql 5.6.35 winx64免安裝版配置教程
這篇文章主要為大家詳細(xì)介紹了win10 mysql 5.6.35 winx64免安裝版配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
完美解決mysql啟動(dòng)后隨即關(guān)閉的問題(ibdata1文件損壞導(dǎo)致)
下面小編就為大家?guī)硪黄昝澜鉀Qmysql啟動(dòng)后隨即關(guān)閉的問題(ibdata1文件損壞導(dǎo)致)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03
MySQL中的 inner join 和 left join的區(qū)別解析
這篇文章主要介紹了MySQL中的 inner join 和 left join的區(qū)別解析,本文通過場景描述給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05

