2008-01-12
MySQL无法读写临时文件的问题处理
关键字: mysql 临时文件
这两天在使用MySQL做点东西,可是从前天开始,系统启动时经常出现类似Can’t create/write to file ‘c:\temp/#sql-XXX.MYI′ (Errcode: 13)"的错误,我以为可能是我的系统的问题,于是重启应用和MySQL,该问题还是陆陆续续会出现,但又不是始终出现。我注意到该问题一般都在查询数据量比较大的时候才出现,我想应该是在做大数据量的数据库操作,MySQL想往temp目录写临时文件时,则于某种原因无法写入导致了该问题,于我,我尝试着着按以下步骤进行分析处理。
一、这可能是MySQL以前生成的临时文件还存在,但具有只读属性导致无法写入。我仔细查看temp目录,却没有找到扩展名为“MYI”的文件,于是把临时目录下的所有文件都删除。重新启动MySQL和应用系统,但问题还是会出现;
二、我怀疑是不是temp目录具有只读属性或对MySQL用户禁止写入,但我的在WindowsXP上,而且临时目录里会有别的系统产生的临时文件,说明该目录是可以读写的,而且我启动MySQL用的是超级用户,所以不存在目录无写权限的问题;
三、会不会是杀毒软件的实时文件保护导致无法写临时文件呢?因为我的杀软的病毒库是天天升级的,前几天也系统没出现过该问题,而这几天可以,是不是我升级了病毒库后,杀软阻止了MySQL产生临时文件呢?我在杀软中把temp目录设为不检测,再重启MySQL和应用,再看着temp目录,里面会出现#sql-XXX.MYI或#sql-XXX.MYD等临时文件,应用系统启动正常。看来问题就出在杀软禁止MySQL产生“MYI”或“MYD”临时文件导致了该问题。
至此,我以为问题就这样解决了,可是在接下来的一次启动中,我看到临时文件产生了,我就在临时文件#sql-XXX.MYI上点右键,想看看文件属性,这一点可好,应用系统又出现了原来的错误,咋回事?我再次停掉应用然后重启,重启过程中不对临时文件作任何操作,应用启动都正常。这是为什么呢?
我分析原因可能是这样的:MySQL产生的临时文件存在时间很短,MySQL在产生临时文件后需要马上使用马上删除,这时候如果有另外一个软件对这些临时文件进行访问或操作的话,MySQL就无法及时获得文件访问权限,就抛出错误。杀软由于启用了文件保护功能,当MySQL产生临时文件后,即锁定文件进行病毒检测,导致了MySQL自己不能马上操作这些文件从而抛出错误,同样的,当我试图查看文件属性时,操作系统对文件也进行了短时间的锁定,而这一锁定导致MySQL自己无法操作,所以也抛出这个错误来。
现在这个问题貌似已经解决,但是否真的已解决还有待接下来几天观察,我的分析是不是正确也有待历史来作出裁定,呵呵。
另外,我也在网上搜了一把,发现很多人也遇到这个问题,但多数人都认为是目录没有写权限而导致,也有部分人知道是杀软导致的这个问题,却没有深入的分析其原因,我就当给有相同遭遇的弟兄抛个砖吧。
一、这可能是MySQL以前生成的临时文件还存在,但具有只读属性导致无法写入。我仔细查看temp目录,却没有找到扩展名为“MYI”的文件,于是把临时目录下的所有文件都删除。重新启动MySQL和应用系统,但问题还是会出现;
二、我怀疑是不是temp目录具有只读属性或对MySQL用户禁止写入,但我的在WindowsXP上,而且临时目录里会有别的系统产生的临时文件,说明该目录是可以读写的,而且我启动MySQL用的是超级用户,所以不存在目录无写权限的问题;
三、会不会是杀毒软件的实时文件保护导致无法写临时文件呢?因为我的杀软的病毒库是天天升级的,前几天也系统没出现过该问题,而这几天可以,是不是我升级了病毒库后,杀软阻止了MySQL产生临时文件呢?我在杀软中把temp目录设为不检测,再重启MySQL和应用,再看着temp目录,里面会出现#sql-XXX.MYI或#sql-XXX.MYD等临时文件,应用系统启动正常。看来问题就出在杀软禁止MySQL产生“MYI”或“MYD”临时文件导致了该问题。
至此,我以为问题就这样解决了,可是在接下来的一次启动中,我看到临时文件产生了,我就在临时文件#sql-XXX.MYI上点右键,想看看文件属性,这一点可好,应用系统又出现了原来的错误,咋回事?我再次停掉应用然后重启,重启过程中不对临时文件作任何操作,应用启动都正常。这是为什么呢?
我分析原因可能是这样的:MySQL产生的临时文件存在时间很短,MySQL在产生临时文件后需要马上使用马上删除,这时候如果有另外一个软件对这些临时文件进行访问或操作的话,MySQL就无法及时获得文件访问权限,就抛出错误。杀软由于启用了文件保护功能,当MySQL产生临时文件后,即锁定文件进行病毒检测,导致了MySQL自己不能马上操作这些文件从而抛出错误,同样的,当我试图查看文件属性时,操作系统对文件也进行了短时间的锁定,而这一锁定导致MySQL自己无法操作,所以也抛出这个错误来。
现在这个问题貌似已经解决,但是否真的已解决还有待接下来几天观察,我的分析是不是正确也有待历史来作出裁定,呵呵。
另外,我也在网上搜了一把,发现很多人也遇到这个问题,但多数人都认为是目录没有写权限而导致,也有部分人知道是杀软导致的这个问题,却没有深入的分析其原因,我就当给有相同遭遇的弟兄抛个砖吧。
- 14:12
- 浏览 (149)
- 评论 (0)
- 分类: 技术文章(Database)
- 进入论坛
- 相关推荐
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 89183 次

- 详细资料
搜索本博客
我的相册
谁敢范我
共 1 张
共 1 张
最近加入圈子
最新评论
-
Axis实践之Axis入门
楼主说的步骤太复杂了,初学者可能看得晕,这里有个捷径,web services和 ...
-- by taelons -
Web Service实践之——开 ...
用Spring的话 XFIRE还是首选
-- by lixiaoxu85 -
Web Service实践之——开 ...
wdmsyf 写道 Web Service实践之—&mdash ...
-- by fengzhiyin -
Axis实践之Axis入门
现在NetBeans下面也可以通过升级插件获得之间的Axis2集成了
-- by Joo -
Axis实践之Axis入门
第一种 我在eclipse 下通过测试 第二种 不行 Error genera ...
-- by xiaopang106






评论排行榜