专栏首页C/C++基础MySQL出现:ERROR 3 (HY000): Error writing file '/tmp/MYbEd05t' (Errcode: 28)

MySQL出现:ERROR 3 (HY000): Error writing file '/tmp/MYbEd05t' (Errcode: 28)

在执行一个有1000万条记录的MySQL查询语句时,出现了上面的错误。百度折腾了很长时间,终于解决,特此记录。

使用perror 28查看错误原因:OS error code 28: No space left on device。原来是因为临时目录的空间不足导致select语句执行失败。为什么会这样呢?原来MySQL在sql运行时会创建临时文件,这个临时文件的大小取决于sql语句以及表的大小。具体多大,就需要在sql运行时来监视这个临时文件夹的大小。如何监视,我也不太清楚!先解决原本的问题。

找到临时文件目录。使用在mysql模式下使用如下命令:

show variables like 'tmpdir'

命令结果:

使用df -h查看/tmp所在分区磁盘空间仅剩5G。于是想办法改变MySQL的临时文件目录。MySQL临时文件目录如果没有显示指定,会陌生设定/tmp。

使用如下命令更改MySQL临时文件目录:

set global tmpdir='/data/mysqltmp'

报如下错误:

看来需要更过配置文件来更改。首先找到MySQL配置文件,使用如下命令:

whereis my.cnf

我的路径是/etc/my.cnf。使用vi添加一行tmpdir=/data/mysqltmp。修改如下图所示,红框中为新增的临时文件目录。

修改后,我们再使用show variables like 'tmpdir',发现更改成功。

但是当我再次执行SQL的时候,发现出现如下错误:

ERROR 1 (HY000): Can't create/write to file '/data/mysqltmp/MYGhGQGv' (Errcode: 13)

同样使用perror 13查看错误的原因如下:OS error code 13: Permission denied。原来没有未指定的目录添加写权限。使用如下命令添加写权限:

chmod a+w /data/mysqltmp

到这里问题已经解决了,但是为了万无一失,还是重启一下MySQL。重启命令:

service mysqld resart

结果问题又来了!重启MySQL失败,报如下错误: Timeout error occurred trying to stop MySQL Daemon.

解决办法,先kill -9再启动。

killall -9 mysqld;
service mysqld resart

大功告成,问题真是一波接一波啊!


参考文献

[1]mysql数据库错误 Error writing file

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ERROR 126 (HY000) at line 1: Incorrect key file for table '/tmp/#sql_7b09_0.MYI'; try to repair it

    我在slelect一个数据量很大的merge表时,并同时将select结果集insert到另外一张表中,报了如下错误:

    Dabelv
  • MySQL出现:ERROR 3 (HY000): Error writing file '/tmp/MYbEd05t' (Errcode: 28)

    在执行一个有1000万条记录的MySQL查询语句时,出现了上面的错误。百度折腾了很长时间,终于解决,特此记录。

    Dabelv
  • MySQL设置远程访问

    在MySQL Server端,执行mysql 命令进入mysql 命令模式。使用grant命令用来建立新用户,指定用户口令并增加用户权限。命令格式如下:

    Dabelv
  • Mysql 之 IOPS、QPS、TPS相关问题总结

    IOPS:(Input/Output operations Per Second,既每秒处理I/O的请求次数)

    海涛
  • XtraBackup工具详解 Part 1 xtrabackup介绍

    Percona XtraBackup是Percona公司开发的世界唯一一个开源的MySQL热备工具,它有如下好处:

    bsbforever
  • Pytest系列(1) - 快速入门和基础讲解

    https://www.cnblogs.com/poloyy/category/1690628.html

    小菠萝测试笔记
  • Django入门:搭建你第一个应用

    Django是用Python编写的免费开源Web框架,用了MVC的框架模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内...

    司徒永哥
  • Lua的OS库时间函数

    time = os.time()返回一个标准的number(数值)格式的时间值,这也是最原始的时间值 os.time()返回的时间是以秒为单位的。

    bering
  • 《 python自动化框架pytest》

    首先说下为什么要学pytest,在此之前相信大家已经掌握了python里面的unittest单元测试框架,那再学一个框架肯定是需要学习时间成本的。刚开始我的内心...

    上海-悠悠
  • 前端与后端开发中技术差异的全面对比[每日前端夜话0x9B]

    如果你是一位有志于全面了解前后端编程语言及框架的开发人员或创业者,那你来对地方了。本文将帮助你了解前端和后端技术之间的基本差异。

    疯狂的技术宅

扫码关注云+社区

领取腾讯云代金券