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

这个错误是典型的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 出错的表名称,回车,这样修复一下就可以了,参考图片如下:

第二种方案,假设你只能运行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数据库存放的位置。

时间: 2024-12-23 09:43:06

MYSQL错误:Can’t open file: ‘×××.MYI’ (errno: 145)的相关文章

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

减少此类问题发生的办法就是尽量减少服务器无故断电,关闭服务器时,最后先手动关闭mysql数据库. 下面看看这个问题: Can't open file: '×××.MYI' (errno: 145),这个错误一般就是你的数据库表文件损坏造成的,造成的原因大概是你把数据库文件挪来挪去的结果,当然不排除其他原因啊. 具体数据库出现错误的提示代码是: Invalid SQL: -- MySQL 错误!: 1016 (Can't open file: '×××.MYI' (errno: 145)) 解决这

MYSQL错误#145的解决办法总结

Mysql有的时候因为掉电或者其他原因导致数据库损坏,错信息如下: MySql: Can't open file: 'sdb_sessions.MYI'. (errno: 145) For more information, see Help and Support Center at 我们可以使用mysql自带的mysqlcheck命令来快速修复所有的数据库或者特定的数据 如果你的数据库主机就你一个人用,并且你还能控制的话,建议你用Mysql自带的修复工具myisamchk.exe进行修复,操

mysql错误server PID file could not be found

在centos5.2下安装5.1.30的时候出现如下mysql错误 MySQL manager orserverPIDfilecould not befound![FAILED] Starting MySQL.Manager of pid-file quit without updating file.[FAILED]mysql 查看错误日志 默认的mysql错误日志是在/usr/local/mysql/data 下面 more ****.err 有下面的信息 090302 02:27:26 m

解决Mysql错误:Can't create/write to file 'C:\WINDOWS\TEMP\#sql_1344_0.MYD' (Errcode: 17)

解决Mysql错误:Can't create/write to file 'C:\WINDOWS\TEMP\#sql_1344_0.MYD' (Errcode: 17)的问题,我所使用的系统是Windows Server http://www.aliyun.com/zixun/aggregation/19058.html">2003 SP2+php 5.2.2+mysql5.0.22+McAfee杀毒软件,当访问用户主页的时候发现mysql出错误,下面来说一下具体的解决方法,风信网 htt

mysql错误:ERROR 29 (HY000): File 'xxx.txt' not found (Errcode: 13)

突然遇到mysql错误:ERROR 29 (HY000): File '/var/www/xiaoyou/static/upload/import/20130427105733.csv.txt' not found (Errcode: 13) 感觉特奇怪,因为程序在本地很ok,生气了语句如下: LOAD DATA INFILE '/var/www/upload/abc.csv.txt' INTO TABLE alumni_import FIELDS TERMINATED BY ',' OPTIO

mysql错误解决总结

1. MySQL错误日志里出现: 140331 10:08:18 [ERROR] Error reading master configuration 140331 10:08:18 [ERROR] Failed to initialize the master info structure 140331 10:08:18 [Note] Event Scheduler: Loaded 0 events   从错误提示就可以看出和mster info相关,找到数据目录下的master.info文件

解决MySQL错误:Too many connections

连接风信网官网 http://www.ithov.com 突然出现如下错误: MySQL ErrorMessage: Can not connect to MySQL serverSQL: Error: Too many connectionsErrno.: 1040Click here to seek help. 连接数超过了 MySQL 设置的值,与 max_connections 和 wait_timeout  都有关系.wait_timeout 的值越大,连接的空闲等待就越长,这样就会造

mysql错误:Warning: #1366 Incorrect string value:解决方法

我用mysql记录syslog-ng的日志信息,分解后把日志插入MYSQL,INSERT语句如下: INSERT INTO logs(host, facility, priority, level, tag, datetime, program, msg) VALUES ( 'phy', 'daemon', 'notice', 'notice', '1d', '2008-07-30 12:24:12','smbd', 'smbd[45997]:   xxxx opened file Public

Mysql错误1366 - Incorrect integer value怎么解决?

  这篇文章主要介绍了Mysql错误1366 - Incorrect integer value解决方法,本文通过修改字段默认值解决,需要的朋友可以参考下 由于这个数据库服务器存放的数据库比较多且都是小数据库,所以最初的时候是运行在windows服务器上的.前一段时间由于机房服务器要做调整,于是我便在一个夜深人静的夜晚对数据库进行的迁移及前台应用程序进行了调整,调整结束后测试应用均可以正常访问后我便离去了. 周一刚上班就收到反馈:网站后台发布文章报如下错误: 代码如下: insert into