MySQL下“Can’t create/write to file xxx (Errcode: 13)”错误的解决方法

http://www.android100.org/html/201406/19/27784.html


最近碰到一个 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

修改方法

下面介绍两种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

注意,无论是 myisamchk还是mysqlcheck,一般情况下不要使用-f强制修复,-f参数会在遇到一般修复无法成功的时候删除 
部分出错数据以尝试修复。所以,不到万不得已不要使用-f。

如果你怕使用命令有问题,可以使用phpmyadmin直接进行修复哦

你可能感兴趣的:(mysql)