[分享]MMYSQL错误:Can’t open file: ‘×××.MYI’ (errno: 145)修复方法_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2197 | 回复: 0   主题: [分享]MMYSQL错误:Can’t open file: ‘×××.MYI’ (errno: 145)修复方法        下一篇 
johnnyfox
注册用户
等级:新兵
经验:41
发帖:90
精华:0
注册:2011-12-12
状态:离线
发送短消息息给johnnyfox 加好友    发送短消息息给johnnyfox 发消息
发表于: IP:您无权察看 2014-11-6 10:11:12 | [全部帖] [楼主帖] 楼主

减少此类问题发生的办法就是尽量减少服务器无故断电,关闭服务器时,最后先手动关闭mysql数据库。

下面看看这个问题:

Can't open file: ‘×××.MYI' (errno: 145),这个错误一般就是你的数据库表文件损坏造成的,造成的原因大概是你把数据库文件挪来挪去的结果,当然不排除其他原因啊。

具体数据库出现错误的提示代码是:

Invalid SQL: ……


MySQL 错误!: 1016 (Can't open file: ‘×××.MYI' (errno: 145))

解决这个问题有多种方案,如果你的数据库可以远程链接或者你可以连接到你的远程服务器桌面,并且你的服务器系统刚好是Windows的,那么你可以:

运行->cmd

然后:mysql –h 主机地址 –u 用户名 –p

然后输入密码,连接数据库;

Use 数据库名称;

然后 输入:reapair table 出错的表名称,回车,这样修复一下就可以了,参考图片如下:

第二种方案,假设你只能运行PHP代码,那么也很简单,写一个php文件,链接上数据库,把这段代码:
Reapair table `表名`,
像发送 “select * ……”一样发送给mysql,也是可以的;

第三种方案,可简单了,打开你的myphpadmin,选中Can't open file:后面同名的表,有个下拉菜单“选中项”,选择“修复”如图:

就ok了。
如果你的数据库主机就你一个人用,并且你还能控制的话,建议你用Mysql自带的修复工具myisamchk.exe进行修复,操作如下:
修复前将mysql服务停止。
如果是Win主机,打开命令行方式,然后进入到mysql的/bin目录。
执行myisamchk -r 数据库所在路径\*.MYI
如果是类Unix主机,直接使用myisamchk -r 数据库目录\*.MYI

其它参考:
Mysql有的时候因为掉电或者其他原因导致数据库损坏,错信息如下:

MySql: Can't open file: 'sdb_sessions.MYI'. (errno: 145)
For more information, see Help and Support Center at


我们可以使用mysql自带的mysqlcheck命令来快速修复所有的数据库或者特定的数据库;例如
检查优化并修复所有的数据库用:

# 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
修复指定的数据库用

# mysqlcheck -A -o -r Database_NAME -p


IXDBA.NET社区论坛
另外如果只是对某个表进行修复可以用:myisamchk或isamchk
其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:

myisamchk tablename.MYI


进行检测,如果需要修复的话,可以使用:

myisamchk -of tablename.MYI


关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL服务器没有访问这个数据表,保险的情况下是最好在进行检测时把MySQL服务器Shutdown掉。
另外可以把下面的命令放在你的rc.local里面启动MySQL服务器前:

[ -x /tmp/mysql.sock ] && /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI


其中的/tmp/mysql.sock是MySQL监听的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/mysql /mysql.sock源码天空,对于使用源码安装则是/tmp/mysql.sock可以根据自己的实际情况进行变更,而pathtochk则是 myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。

MYSQL建立外键失败几种情况记录Can\'\'t crea
解决mysql ERROR 1017:Can\'\'t fi
php运行提示Can\'\'t connect to MyS
php 不能连接数据库 php error Can\'\'t

 Can’t open file:\'\'[Table]myt


mysql 一个较特殊的问题:You can\'\'t sp
MySQL数据库.frm文件、.MYD文件和.MYI文件的修
MySQL错误:Can\'t connect to MySQ
mysql错误:……is marked as crashed
MYSQL提示Can't create a new thre

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论