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 表修复失败:“无法创建新的临时文件”的主要内容,如果未能解决你的问题,请参考以下文章