WordPress建立数据库连接时出错(Error Establishing a Database Connection),如果遇到这个问题,是怎么回事?要怎么办?那依据我多年的观察,我总结了5种常见原因及其解决方法。
对于使用WordPress托管主机的同学而言,譬如我用的Cloudways主机,不需要自己去配置数据库信息,那么,遇到数据库连接出错的情况,通常原因是:
- 服务器繁忙:也就是主机的配置性能撑不住当前的访问或操作需求,譬如:流量激增、后台操作频繁、服务器配置低、服务器中网站太多,这种情况下,你访问网站时而正常,时而提示数据库连接出错,又或者你在编辑文章或产品后,点击保存按钮后提示出错;
- 数据库服务停了/宕机了:访问网站时持续出错,需要去主机中重启一下;
- wordpress、主题、插件引起的:譬如它们太久没更新了,或者是三者之中存在不兼容的情况,又或者用了盗版或破解版的主题插件;
那如果你买的是具备在线客服的WordPress托管主机,你完全可以直接联系在线客服帮你排查问题,并给出解决方案,这一点Cloudways就有7/24小时的客服能帮你,记得找客服时,别一直跟机器人对话,告知它问题后,要联系人工进行处理(talk to person)。
如果你买了个非托管的主机,主机又不支持一键安装WordPress的,那么还有一类情况:你的数据库连接信息配置有误,通常在wp-config.php文件中可以配置这部分信息,但你填写有误。
那还有一些其他的情况,譬如你给WordPress网站搬家呢,如果自行上传数据库,或者插件搬家出错,结果导致数据库上传的不完整,那么这种数据库表损坏也会导致你无法连接。
接下来,我逐一讲解每种情况的WordPress数据库连接出错要如何解决。
服务器繁忙
正如我在上文所说,如果你的网站突然流量激增,譬如打广告引流了,又或者你安装了一些很消耗主机性能的插件进行操作,又或者装的插件比较多,你在操作时偶尔、间或遇到网站出现数据库断连的情况。
此时,我们可以去看下主机的监控,通常,专业的wordpress托管主机都能够提供主机的性能监控(monitor),查看主机的CPU、内存的消耗情况,检查MySQL数据库服务是running(运行中)还是stopped,如果你搞不懂这些,直接联系主机的客服帮你看就好,然后让他们告诉你原因、以及帮你解决。
以我用的cloudways为例,你可以在服务器/server的monitor中找到当前的内存、cpu使用情况。
如果你看到CPU或内存不足,譬如下图中,CPU使用率就很高,此时,就说明服务器性能不足,那解题思路是:如果你主机配置不高(譬如1G),那大概率需要你升级主机(vertical scaling)或将主机中的多个网站拆到新主机中。
那如果你的配置本身比较可以,譬如2核4G或以上,网站也不多,目前只是遇到了广告激增流量,那么可以先暂停广告,调整策略,还有就是使用CDN,譬如在cloudways里可以给每个网站(application)开启cloudflare CDN,通过CDN来分担服务器的流量激增压力。
数据库服务停了/宕机了
依旧以cloudways为例,我们可以查看数据库的服务是否还在运行状态,如下图所示,你能看到mysql是running状态,说明数据库服务是正常运行的,如果看到的是stopped,那么你就需要启动它一下了,否则你也连不上数据库。
那如果重启数据库没反应,启动不了,那你可以重启一下服务器
如果还不行,那找主机的人工客服处理。
wordpress、主题、插件引起的
有些同学,一两年都不更新一次wordpress、主题、插件,不过,有些主机,会自动帮你更新wordpress以避免漏洞侵害,而通常主题插件并不会默认保持更新状态,这就导致它们之间会存在不兼容的情况。
你需要把网站备份一下,然后把主题、插件都来一次更新,如果你用到了破解的主题、插件,那么它们很可能不提示你更新(下图是有更新提示的情况),导致你也不知道他们是不是最新版,查看更多关于WordPress的更新。
还有些情况是,你用的主题、插件品质太低,导致与数据库连接出现问题,所以,如果你是装了某个插件或主题后遇到这个情况,那你就需要禁用、删除这个主题和插件,如果此时你都无法进入后台,可以通过恢复网站历史备份,或者通过主机提供的File manager 或 FTP访问网站的文件夹,进入wp-content目录下,再进入themes和plugins文件夹内,知道对应的主题或插件的文件夹名称,重命名(rename)它,即可禁用这个主题或插件。
注意,cloudways主机不提供file manager功能,但有每日自动备份,如果你要进入网站文件管理器,则需要借助FTP插件来连接。
你的数据库连接信息配置有误
如果你用宝塔面板,或者在自己电脑中安装wordpress,通常都需要你自己填入数据库的信息,像下图这样。
那如果后期你修改过数据库的信息,但又没有进行配置的修改,就会无法连接数据库。
这个数据库配置信息存放在网站文件的根目录之中,名为wp-config.php,如下图所示,红框部分便是配置数据库信息的地方,请检查它们是否正确,如果错误,请修改正确。
数据库表损坏
数据库表损坏时,我们可以做的尝试如下:
- 恢复网站备份,通常wordpress托管主机都有每日自动备份
- 如果你是搬运网站时出现问题的,那么你可以尝试删除新站,重新搬运
- 如果你是建站过程中突然遇到这个问题,那你要回忆一下最近你做了什么操作,譬如是否有上传主题、插件,从而看看是谁引起的问题,按照上文做法,可以通过文件管理器去禁用对应插件,再看看问题是否修复,也可以找找主机客服帮你看一下(通常专业的wordpress托管主机的客服的支持力度比较好)
- 最后,你还可以尝试下面这个方法,使用wordpress内置的数据库修复功能,编辑wp-config.php这个文件,添加如下代码
define('WP_ALLOW_REPAIR', true);
,这个代码放在紧邻文案That’s all, stop editing!之上即可然后再在浏览器访问你的网站域名+/wp-admin/maint/repair.php 这样的网址(譬如http://yourwebsite.com/wp-admin/maint/repair.php),即可启用数据库修复操作界面点击修复数据库,并等待修复完成提示后,记得删除刚才我们在wp-config.php这个文件添加的代码define('WP_ALLOW_REPAIR', true);