admin管理员组

文章数量:1618730

现象

数据库执行ddl时报错:[HY000][1878] Temporary file write failure.

原因

创建临时表的时候,因为临时空间不够,导致临时文件写入失败

解决

MySQL官方文档中的说明

1.查看临时空间路径

SHOW VARIABLES LIKE 'tmpdir'

我的是默认路径,根据官方文档及网友们提供的思路,修改临时空间即可。

2.查看要修改表的数据大小

如果已经修改过临时空间,那么可以尝试扩展临时空间大小,这个我没有尝试

SELECT
    table_name AS `Table`,
   round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB`
     FROM information_schema.TABLES
     WHERE table_schema = '库名' and  TABLE_NAME='表名';

3.修改临时空间路径

mkdir -p /data/tmp
chown -R mysql:mysql /data/tmp
chmod a+w /data/tmp
修改MySQL配置
vim /etc/myf
把tmpdir设置到 /data/tmp
tmpdir=/data/tmp
修改完成后,需要重启mysql服务
service mysqld restart

参考资料

记一次 Mysql DDL 错误 [Temporary file write failure]
mysql 修改大表字段,报错ERROR 1878 (HY000): Temporary file write failure. 用pt-online-schema-change
【MySQL】ERROR 1878 (HY000): Temporary file write failure.
mysql ERROR 1878 (HY000): Temporary file write failure错误
MySQL官方文档——15.12.3 Online DDL Space Requirements
MySQL官方文档——tmpdir
MySQL官方文档——8.4.4 MySQL中内部临时表的使用

本文标签: fileTemporaryfailurewrite