文章分析与介绍关于在使用MySQL中提示“Can’t create/write to file xxx (Errcode: 13)”错误问题的原因与处理方法.
最近碰到一个 MySQL不能创建临时文件的错误,解决过程中学到一些知识,这里分享一下,希望对碰到类似问题的同学有所帮助.
关于MySQL临时文件:
1、MySQL使用环境变量TMPDIR的值作为保存临时文件的目录的路径名。如果未设置TMPDIR,MySQL将 使用系统的默认值,通常为/tmp、/var/tmp或/usr/tmp。
2、MySQL会以隐含方式创建所有的临时文件。这样,就能确保中止mysqld时 会删除所有临时文件。
3、 进行排序时(ORDER BY或GROUP BY),MySQL通 常会使用1个或多个临时文件。
4、对于某些SELECT查询,MySQL还会创建临时SQL表,它们不是隐含表,并具有SQL_*形式的名称.
分析问题:
如果某些查询遇 到”Can’t create/write to file xxx (Errcode: 13)“类型的错误,它意味着MySQL不能为临时目录下的结果集创建临时 文件.
Google查询得知以下三种情况可能会导致此问题:
①、%TMPDIR% 文件夹权限不够。
②、%TMPDIR% 文件夹的磁盘满了,文件写不 进去了,清空 TEMP 文件夹;
③、第三方限制(如杀毒软件的限制)
解决方法:
方法一、在my.inip配置文件中查找”[mysqld]“,在其下添加一行:
tmpdir=%你想指定的MySQL临时文件目录(例如 D:temp)%
方法二、如果机器上装了杀毒软件,可以尝试排除对临时文件的扫描。
360杀毒(已测试过):
设置—>>>白名单设置—>>>添加目录—>>>%TMPDIR%–>>> 确定。
麦咖啡,网上信息,未亲自测试过.
打开McAfee VirusScan控制台->按访问扫描程序->属性->所有进程->检测项->排除项->添加%TMPDIR%,排除时间选择读取时写入时。
资源:
A.4.4. MySQL将临时文件储存在哪里—dev.mysql.com/doc/refman/5.1/zh/problems.html#temporary-files
A.2.12. 无法创建文件/写入文件—dev.mysql.com/doc/refman/5.1/zh/problems.html#cannot-create
MySQL更多问题—dev.mysql.com/doc/refman/5.1/zh/problems.html
修改方法
下面介绍两种MySQL修复表的方法。
1. myisamchk
使用myisamchk必须暂时停止MySQL 服务器。例如,我们要检修blog数据库。执行以下操作:
# service mysql stop(停止MySQL)
# myisamchk -r /datawhere/blog/*MYI
# service mysql start myisamchk 会自动检查并修复数据表中的索引错误。
2. mysqlcheck
使用mysqlcheck无需停止MySQL,可以进行热修复,操作步骤如下,检修 blog库.
# mysqlcheck -r -uroot -p blog //Vevb.com
注意,无论是 myisamchk还是mysqlcheck,一般情况下不要使用-f强制修复,-f参数会在遇到一般修复无法成功的时候删除部分出错数据以尝试修复,所以,不到万不得已不要使用-f,如果你怕使用命令有问题,可以使用phpmyadmin直接进行修复.
新闻热点
疑难解答