这两天在使用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因不能创建临时文件而无法启动时,通常是因为权限问题。通过检查并调整`/tmp`目录的权限,或设置自定义的临时文件目录,可以有效地解决这个问题。同时,应始终关注系统安全性,避免开放不必要的...
MySQL数据库为了处理一些特定操作如排序(ORDER BY)、分组(GROUP BY)或创建临时表,会在运行时创建临时文件。这些临时文件通常是在数据库服务器上为特定数据库操作动态生成的,不会永久保存,以确保在数据库服务...
4. **清理临时文件**:清理安装过程中产生的临时文件。 ```bash strip /usr/local/sbin/mysql-proxy ``` #### 三、配置并启动 MySQL Proxy 1. **编写启动脚本**:为了方便管理 MySQL Proxy 的启动和停止,需要...
### MySQL相关知识点详解 #### 一、MySQL简介与基本概念 **数据库(Database)**:是一种按照...以上是对MySQL文档中提到的关键知识点的详细总结和解释,希望能帮助读者更好地理解和掌握MySQL的基本概念和使用技巧。
安装MySQL 8.4.0 Winx64时,你需要解压压缩包中的文件到合适的目录,然后按照官方文档的指引进行配置和安装。记得设置合适的用户账户和权限,以及考虑使用数据加密来保障数据库的安全。在日常运维中,定期进行性能...
MySQL和PostgreSQL均支持数据加密,前者可在表级别指定密码进行加密,并利用`AES_ENCRYPT`和`AES_DECRYPT`函数处理列数据;后者则通过`pgcrypto`库中的函数实现列级加密。两者还支持通过SSL连接提供网络加密功能,...
本高级优化文档主要针对在Linux环境下运行的MySQL,涵盖了安装、配置以及系统优化等多个方面。以下是相关的知识点详解: 1. **MySQL安装与配置** - **源码编译安装**:为了获取最佳性能和定制化选项,可以选择源码...
当我们需要处理一些临时性的数据操作时,可能会涉及到创建临时表。下面我们将详细探讨如何在SpringBoot项目中整合Mybatis,以实现创建临时表的功能。 首先,我们需要在SpringBoot项目中引入Mybatis的相关依赖。在`...
[client] port = 3306 socket=/home/mysql/data/mysql.sock ...# 如果临时文件会变得超过索引,不要使用快速排序索引方法来创建一个索引。注释:这个参数以字节的形式给出 myisam_repair_threads ...
3. **设置权限**:使用`chown mysql:mysql -R /data/mysql`来赋予MySQL用户对其数据文件夹的读写权限。 #### 五、配置MySQL配置文件 编辑MySQL的配置文件(通常位于/etc/my.cnf或/etc/mysql/my.cnf),设置必要的...
- **错误处理**:在代码中添加适当的错误处理,如文件读写失败、数据库连接问题等。 总结来说,从Oracle的BLOB类型字段中提取并转换到MySQL的过程涉及到查询、导出、上传等多个步骤。在实际操作中,需要对数据库API...
《Mysql设备选型与系统规划》这一文档为我们提供了详细的实战参考,涵盖了从硬件选择到系统架构规划的各个方面,这些内容对于从事MySQL数据库工作的专业人士来说是十分宝贵的参考资料。 文档指出,设备选型是一个...
1. **存储引擎**:处理数据的读写操作,如InnoDB(支持事务处理和外键)、MyISAM(快速读取但不支持事务)等。 2. **SQL解析器**:将用户输入的SQL语句转化为内部可以理解的格式。 3. **查询优化器**:选择最优的...
3. **错误处理**:脚本未包含错误处理机制,当遇到问题时可能无法提供有用的错误信息。 4. **日志记录**:为了方便日后排查问题,建议在实际部署时增加日志记录功能。 综上所述,本脚本提供了一个简洁而全面的MySQL...
MySQL 有着庞大的开发者社区,遇到问题时,可以查阅官方文档、社区论坛或者 Stack Overflow 获取帮助。此外,还有许多第三方工具(如 phpMyAdmin、MySQL Workbench 等)方便管理和操作 MySQL 数据库。 7. **升级与...
进入`mysql-5.7.18/bin`目录,执行`./mysqld --initialize --user=mysql --datadir=/opt/mysql/data --basedir=/opt/mysql-5.7.18`,这会生成一个临时的root用户的随机密码,一定要记录下来,因为之后登录MySQL需要...
例如,InnoDB存储引擎得到了显著优化,支持更高的并发事务处理能力,同时也提高了数据读写的速度。此外,查询优化器也有了显著提升,能够更准确地估计查询执行计划,从而提高查询效率。还有对UTF-8字符集的全面支持...