Mysql 表修复失败:“无法创建新的临时文件”

Posted

技术标签:

【中文标题】Mysql 表修复失败:“无法创建新的临时文件”【英文标题】:Mysql table repair failed: "Can't create new tempfile" 【发布时间】:2015-10-19 11:56:31 【问题描述】:

我经营一个 WordPress 网站。今天我发现 wp_posts 表崩溃了。当我尝试修复表时,出现以下错误:

REPAIR TABLE wp_posts;

error Can't create new tempfile: './[databasename]/wp_posts.TMD' 

repair  status    Operation failed

我尝试在 shell 中运行以下命令:

myisamchk -r -f wp_posts.MYI

error: File 'wp_posts.MYI' doesn't exist

您能告诉我还有什么办法可以解决这个问题吗?

【问题讨论】:

【参考方案1】:

当我在 phpMyadmin 中看到此错误时,我通过导航到 /var/lib/mysql/[database]/ 并删除我试图修复的表的 TMD 文件(不是 MYI 文件中所述上面的解释)。

当我尝试删除 MYI 文件时,修复操作不起作用。

【讨论】:

【参考方案2】:

我也遇到了同样的麻烦。问题是 .TMD 文件已经存在并且 mysqlrepair 拒绝覆盖它。我删除了 .TMD 文件,并且 mysqlrepair 运行良好。我不得不停止尝试使用崩溃表的进程,然后运行修复。

【讨论】:

【参考方案3】:

原来“myisamchk -r -f wp_posts.MYI”是正确的解决方案。我只需要转到数据文件夹。

在我的CentOS系统中,我将目录更改为/var/lib/mysql/[database]/,找到wp_posts.MYI

删除此文件后,修复成功。

【讨论】:

也为我工作!但是,有人知道为什么会这样吗?我不想再这样做了哈哈哈【参考方案4】:

对于 mariaDB 和其他一些 OS 和 DB 版本的组合,该文件也可能位于 /config/databases/[DATABASE] 下。 尝试以 root 身份运行 (sudo su):

service mysql stop
myisamchk -rf /config/databases/[databasename]/wp_posts.MYI
service mysql start

【讨论】:

【参考方案5】:

尝试使用以下命令停止您的服务sudo service mysql stop

现在做维修检查myisamchk -r -f -o /var/lib/mysql/DatabaseName/wp_posts

开始您的服务并享受它!

对我有用

【讨论】:

这太神奇了。非常感谢!你救了我。我试过了。 sudo myisamchk -r -f -o /var/lib/mysql/[dbname]/wp_options【参考方案6】:

尝试将以下行添加到您的 wp-config.php 文件中:

define( 'WP_ALLOW_REPAIR', true );

然后转到: /wp-admin/maint/repair.php

这应该会生效并自动修复您崩溃的表。

【讨论】:

非常感谢您的回答 完成修复后,不要忘记从 wp-config.php 文件中删除这一行。未经身份验证的用户可以访问 URL /wp-admin/maint/repair.php。

以上是关于Mysql 表修复失败:“无法创建新的临时文件”的主要内容,如果未能解决你的问题,请参考以下文章

mysql常见错误代码

怎样修复损坏了的innodb 表

一技MySQL调优小淫技 & 分布式事务常用姿势

MYSQL 08S01错误怎么解决

修改hostname导致mysql重启slave失败的修复方法

MySQL--使用innodb_force_recovery修复数据库异常