最近碰到一个 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
http://xzh.i3geek.com