在Wordpress网站上出现数据库错误“一个或多个数据库表不可用”

问题描述

错误(SELECT IF(pa.store_id = 9,pa.status,'null') FROM products_actions pa WHERE p.id = pa.product_id AND pa.store_id = 9) AS store_1

我该如何解决这个问题?

wp-config.php是正确的。

解决方法

我通过添加以下内容来解决:

static func encodingStrToDecoder(_ encoding: String) -> some UnicodeCodec {
    switch encoding {
    case Encoding.utf8:
        print("Returning UTF8")
        return UTF8()
    case Encoding.utf16:
        print("Returning UTF16")
        return UTF16()
    case Encoding.utf32:
        print("Returning UTF32")
        return UTF32()
    default:
        print("Returning UTF8 (DEFAULT)")
        return UTF8()
    }
}
,

要解决此错误,您必须添加

define('WP_ALLOW_REPAIR',true);

wp-config.php 文件中的上面一行。

如果此方法不起作用,则必须检查是否有数据库备份,然后创建新数据库和新用户,然后在新数据库中导入备份的数据库 SQL 文件。 然后将数据库凭据替换为 wp-config.php 文件中的旧凭据。

这个方法可以帮到你。

,

我使用 windows、xampp 7.1,并且每个月都会遇到这个 wordpress 数据库损坏。 WP_ALLOW_REPAIR 什么都不做,wp repair 只是显示一切正常。调试日志中没有任何内容。

无论如何,当我去 phpmyadmin 时,我发现 wp_options 表无法打开,phpmyadmin 建议修复它。

我使用 sql 命令修复了表 -

repair table newdb28.wp_options use_frm;

use_frm 是告诉 db 忽略索引并仅通过数据重新创建 db 的东西。

我可以点击并查看 wp_options 中的数据,但 wordpress 仍然无法正常工作..

我在命令行(以管理员身份运行的命令行)中到 xampp 到 xampp7.1\mysql\bin\mysqlcheck 并运行命令来修复我数据库中的所有表

mysqlcheck dbname -uroot --auto-repair --use-frm

检查所有表都OK,但你可以猜到 wp 仍然没有工作。

解决方案:我去了 wp_options 表,按 id 排序,注意到最低的 id 是 7。然后检查了我的其他 wp 项目,看到这里的行以 id 3 开头,并且 7+ 的键与我损坏的数据库相同..所以我导出了那些 id 3-6 行并将它们导入到其他表中,一切都奇迹般地工作了......(wp_options 中那些缺失的行是显而易见的复制粘贴内容,但第一个是我相应地设置的“siteurl”,如果你使用旧版本或开发相同项目的版本会更容易)。

还检查了我一个月前损坏的数据库,由于某种原因我没有删除它,并且它在 wp_options 表中缺少前 5 行时遇到了同样的问题...

无论如何,如果这对未来的任何人有帮助,那就值得大惊小怪:)