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%,排除时间选择读取时写入时。

资源:
Can’t create/write to file …解决方法—-
hi.baidu.com/%D3%B2%BA%BA%D6%DD%B3%A4/blog/item/42166e9bccbb97bfc9eaf4ca.html

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

http://xzh.i3geek.com
Back to Top