网站白屏、后台打不开、文章保存失败,或者数据库工具提示某张表崩溃,都可能和数据库有关。但这些现象不一定都是“数据库表损坏”。例如“建立数据库连接时出错”,也可能是数据库服务停止、账号配置错误或服务器资源不足。
先别急着修表或重装网站。按下面的顺序确认问题、备份数据,再选择合适的处理方式,能减少误操作带来的损失。

记录页面上的完整错误提示,并查看主机面板或数据库日志。不同线索对应的排查方向不同:
marked as crashed 或数据库工具报告某张表损坏:再针对这张表检查;Error establishing a database connection:先检查数据库服务状态、数据库名称、用户名、密码和主机地址,不能直接认定为表损坏;如果网站仍在运行,先避免批量导入、清理或反复执行修复命令,以免扩大问题。

优先在主机面板创建数据库快照或备份,并将备份保存到服务器之外。条件允许时,同时备份网站文件,尤其是 wp-config.php 和 wp-content。
如果数据库已经无法导出,或者备份过程报错,不要连续尝试各种修复命令。联系主机商,请他们先对数据库做快照并查看 MySQL/MariaDB 日志。没有可验证的备份时,修复操作可能让数据更难恢复。

完成备份后,如果数据库服务正常、问题表现确实指向数据表,可以临时在 wp-config.php 中加入:
define('WP_ALLOW_REPAIR', true);然后访问:
https://你的域名/wp-admin/maint/repair.php按页面提示检查或修复数据库。该页面无需登录即可访问,所以操作完成后,要立即从 wp-config.php 删除这行配置。
需要注意,自带工具并不能修复所有存储引擎和所有类型的故障。如果结果显示不支持,或修复后问题仍在,不要反复运行;先记录结果,再根据数据表引擎和数据库日志判断下一步。

如果主机提供 phpMyAdmin,可以查看错误涉及哪张表、该表使用什么存储引擎,并先使用检查功能确认状态。不要因为不确定就对所有表一键操作。
MySQL 的 REPAIR TABLE 主要适用于 MyISAM 等特定引擎;WordPress 常见的 InnoDB 表不能用它修复。遇到 InnoDB 表报错时,应查看数据库日志、确认磁盘和数据库服务状态,并联系主机商或数据库管理员处理,而不是照搬网上的 REPAIR 命令。
“优化表”也不等于“修复表”:优化主要处理空间或性能问题,不应被当作修复损坏的通用方法。

如果修复工具失败,或数据库持续报错,先检查是否有故障发生前的可用备份。恢复前确认备份时间、站点文件与数据库是否匹配,并尽可能先恢复到测试环境验证。
不要在没有确认备份可用的情况下清空线上数据表再导入,也不要把新装 WordPress 的空表结构和旧数据库数据随意拼接。若只能恢复到正式站,先让主机商或熟悉数据库恢复的人员确认步骤和回滚方案。

确认数据库可以正常读写后,再测试:
同时检查近期是否发生过服务器异常中断、磁盘空间不足、数据库迁移或恢复中断、存储故障等情况。这些是值得调查的线索,但单凭其中一项不能直接断定它就是表损坏的原因。
REPAIR TABLE 用在 InnoDB 表上;WP_ALLOW_REPAIR 配置;处理 WordPress 数据库表损坏,顺序比“工具多”更重要:先核实报错和数据库状态,再备份,然后针对具体表检查;如果数据库引擎不支持修复或问题持续出现,就停止尝试并寻求主机商协助,必要时从可靠备份恢复。
数据库报错不等于数据表一定损坏。先找到证据、保住数据,再修复,才是更稳妥的排查方式。
本文由郑州沃之涛科技有限公司(沃之涛科技)整理,供网站规划与交接参考。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。