【已解决】Temporary file write failure

it2024-04-07  51

现象

数据库执行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/my.cnf 把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中内部临时表的使用

最新回复(0)