服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|

服务器之家 - 数据库 - Mysql - MYSQL错误:Can’t open file: ‘×××.MYI’ (errno: 145)修复方法

MYSQL错误:Can’t open file: ‘×××.MYI’ (errno: 145)修复方法

2019-11-13 15:31mysql教程网 Mysql

这个错误是典型的mysql表受损造成的,解决的办法就是修复表,这个问题也是mysql经常容易出现的,mysql表和索引损坏的几率很大,但是修复也很方便

减少此类问题发生的办法就是尽量减少服务器无故断电,关闭服务器时,最后先手动关闭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 出错的表名称,回车,这样修复一下就可以了,参考图片如下: 
MYSQL错误:Can’t open file: ‘×××.MYI’ (errno: 145)修复方法

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

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

MYSQL错误:Can’t open file: ‘×××.MYI’ (errno: 145)修复方法

就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数据库存放的位置。

延伸 · 阅读

精彩推荐
  • Mysqlmysql 8.0 Windows zip包版本安装详细过程

    mysql 8.0 Windows zip包版本安装详细过程

    这篇文章主要为大家详细介绍了mysql 8.0 Windows zip包版本安装详细过程,以及密码认证插件修改,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    cns3182019-07-15
  • Mysqlmysql中的锁机制深入讲解

    mysql中的锁机制深入讲解

    对于任何一种数据库来说都需要有相应的锁定机制,所以MySQL自然也不能例外。下面这篇文章主要给大家介绍了关于mysql中锁机制的相关资料,文中通过示例...

    木瓜芒果3852019-06-16
  • Mysqlwin32安装配置非安装版的MySQL

    win32安装配置非安装版的MySQL

    当前非安装版是从MySQL.com下载来的v5.1.40;下载下来的是一个ZIP压缩包,解压到C:\MySQL5.1.40目录,接下来,设置系统环境变量,好在CMD命令行下使用MySQL。 ...

    mysql教程网4752019-11-05
  • Mysql批量替换 MySQL 指定字段中的字符串

    批量替换 MySQL 指定字段中的字符串

    批量替换 MySQL 指定字段中的字符串是数据库应用中很常见的需求,但是有很多初学者在遇到这种需求时,通常都是用脚本来实现;其实,MySQL 内置的有批量...

    mysql教程网3862019-11-01
  • Mysqlmysql 显示SQL语句执行时间的代码

    mysql 显示SQL语句执行时间的代码

    查看 MySQL 語法 詳細執行時間 與 CPU/記憶體使用量: MySQL Query Profiler ...

    mysql教程网1562019-10-31
  • Mysql对比分析MySQL语句中的IN 和Exists

    对比分析MySQL语句中的IN 和Exists

    mysql中in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。一直以来认为exists比in效率高的说法是不准确的。...

    lilugoodjob2032019-07-11
  • MysqlMySQL约束类型及举例介绍

    MySQL约束类型及举例介绍

    今天小编就为大家分享一篇关于MySQL约束类型及介绍的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来...

    no-961722019-06-19
  • MysqlNavicat修改MySQL数据库密码的多种方法

    Navicat修改MySQL数据库密码的多种方法

    这篇文章主要介绍了Navicat修改MySQL数据库密码,需要的朋友可以参考下...

    上海程序员-王晓4342019-06-28