- 错误类型:
- 数据库错误
- 错误名称:
- 建立数据库连接时出错
- 英文名称:
- Error Establishing a Database Connection
- 错误描述:
- 数据库损坏或者登录凭据不正确,损坏的WordPress文件,数据库服务器问题和流量激增都有可能导致此错误发生。
“ 建立数据库连接时出错(Error Establishing a Database Connection) ”可能是WordPress用户可能遇到的最常见和最可怕的错误之一。这绝对与死亡白屏(WSOD)息息相关。此错误意味着您的网站不再通信或可以访问WordPress数据库,整个网站瘫痪。
对于这样的错误,站长切勿掉以轻心的事情,应该立即尝试解决此问题,直接影响流量,SEO等等。但不用担心,今天我们将讨论导致此错误的一些常见情况,以及对应的解决方案。
什么是建立数据库连接时出错?
WordPress网站上的所有信息,例如发布数据,页面数据,元信息,插件设置,登录信息等,都存储在MySQL数据库中。唯一没有存储的数据是媒体内容,例如图像,以及主题/插件/核心文件,例如index.php,wp-login.php等。当有人访问您的网站时,PHP会在页面上执行代码并从数据库中查询信息,然后将其显示到访客浏览器中。
如果由于某种原因这无法正常工作,则将出现建立数据库连接时出错,如下所示。整个页面空白,因为连接无法正常工作,无法检索任何数据以呈现页面。这不仅破坏了网站的前端,而且导致无法访问WordPress仪表板。
但是,访客可能不会立即在前端看到此错误。那是因为站点缓存还可供访问,直到缓存过期为止。
建立数据库连接时出错
当发生此错误时访问者尝试访问您的站点时,它将在您的日志中生成500 HTTP状态代码。同样的状态码会出现“内部服务器错误”。这意味着服务器出现问题,请求的资源未交付。当一切正常时,您的站点将生成200 HTTP状态代码,这意味着一切正常。
导致此错误的常见情况
那么究竟为什么会发生这种情况呢?好吧,以下是一些常见的原因。不用担心,我们将更深入地研究每一个问题,以便您知道如何解决它们。通常,您可以在15分钟内解决此错误。
- 最常见的问题是数据库登录凭据不正确。WordPress网站需要使用数据库相关登录信息来连接到其对应的MySQL数据库。
- 数据库已损坏。由于主题,插件可安装卸载如此之多,长年累月的不断删除和安装,有时会导致数据库损坏。这可能是由于表丢失或个别损坏,或者是某些信息被意外删除了。
- WordPress安装中可能存在损坏的文件。这有时甚至可能由于黑客而发生。
- 数据库服务器问题。Web主机端可能有几件事是错误的,例如由于流量峰值导致数据库过载或由于太多并发连接而无响应。这在共享主机中很常见,因为它们为同一服务器上的许多用户使用相同的资源。
- 流量激增。根据您使用的 Web 主机,您的服务器可能无法处理许多并发数据库连接。流量的增加可能会导致数据库出现临时问题。
如何修复“建立数据库连接时出错”
在开始对错误进行故障排查之前,建议您首先进行数据库备份,因为以下许多建议涉及操作数据库中的信息。无论你的技术水平如何,在尝试修改WordPress网站数据库之前,都应始终进行备份。
您可以使用WordPress备份插件(例如VaultPress或WP Time Capsule)来备份文件和数据库。
如果是宝塔面板用户,那就网站文件及数据库备份就很简单了,进入宝塔控制面板,在左边菜单找到“计划任务”,进入界面找到备份数据库和备份网站,手动执行即可。
备份WordPress网站
当然你还可以通过SFTP等工具,进入服务器执行手动备份网站文件,及通过phpMyAdmin手动备份MySQL数据库。备份成功后,就该开始对“建立数据库连接时出错”问题进行故障排除了。
参考阅读:《使用BackWPup插件备份WordPress教程》、《如何安全备份WordPress博客网站数据?》
1.检查数据库登录凭据
首先要做的是检查以确保WordPress配置文件的数据库登录凭据正确。这是迄今为止“建立数据库连接时出错”报错的最常见原因,特别是在迁移网站到新的托管服务提供商之后。WordPress网站的连接详细信息存储在wp-config.php文件中,该文件通常位于WordPress网站的根目录下。
它包含四个重要信息,这些信息都必须正确才能成功进行连接数据库。
数据库名称
// ** MySQL settings ** // /** The name of the database for WordPress */ define('DB_NAME', 'xxxxxx');
数据库用户名
/** MySQL database username */ define('DB_USER', 'xxxxxx');
数据库密码
/** MySQL database password */ define('DB_PASSWORD', 'xxxxxxxxx');
主机名(服务器)
/** MySQL hostname */ define('DB_HOST', 'localhost');
要访问wp-config.php文件,您可以通过SFTP连接到站点并浏览到站点的根目录。或者,如果您使用的是宝塔,则可以进入宝塔控制面板单击“文件”,浏览到站点的根目录,然后右键单击以编辑文件。
宝塔文件管理
以下是打开文件后的示例。
wp-config.php文件数据库访问凭证
现在,您需要对照当前值及服务器数据库真实值,以确保它们正确无误。对于宝塔用户,请按照以下说明进行操作。
检查宝塔面板中的数据库凭据
您需要登录宝塔面板,进入数据库即可找到网站对应的数据库,找到数据库名、用户名及密码等信息 。
宝塔面板查看数据库账号密码
然后核对wp-config.php文件的对应信息,确保两边的信息一致即可,非常方便。(或者这也就是国内众多站长选择使用宝塔面板的原因)
检查cPanel面板中的数据库凭据
如果你是使用cPanel管理主机,整个步骤稍微有点复杂。
首先要检查的是数据库名称。为此,您需要进入cPanel控制面板登录phpMyAdmin 。
cPanel控制面板的phpMyAdmin
在左侧菜单找到你的网站对应的数据库名称。忽略“information_schema”数据库,因为这是主机使用的数据库。然后,将该名称与wp-config.php文件中的DB_NAME值进行比较。如果它们匹配,那么这不是问题。如果它们不匹配,那么您需要更新wp-config.php文件。
cPanel 数据库名称
您还可以通过确保数据库是否包含你网站的URL来验证这是正确的数据库。只需单击数据库,然后单击wp_options表(出于安全目的,此名称可能稍有不同,例如wpxx_options)。在表格的顶部,您将看到网站URL和名称的值。如果这些与您当前站点匹配,说明这个是你的网站的数据库。
在phpMyAdmin检查网站URL
如果数据库名称正确,但是在建立数据库连接时仍然出现错误,那你还需要检查用户名和密码。为此,你需要在WordPress网站的根目录中创建一个新的PHP文件(随意命名,例如checkdb.php),并输入以下代码,需使用wp-config.php文件中的值替换为db_user和db_password的值。
<?php $test = mysqli_connect('localhost', 'db_user', 'db_password'); if (!$test) { die('MySQL Error: ' . mysqli_error()); } echo 'Database connection is working properly!'; mysqli_close($testConnection);
浏览器访问https://yourdomain.com/checkdb.php。如果收到“MySQL Error: Access denied(MySQL错误:访问被拒绝)”,则说明您的用户名或密码错误,您将需要继续执行下一步以重置凭据。
MySQL错误:访问被拒绝
但如果是“Database connection is working properly.(数据库连接正常工作)”,则说明数据库用户名和密码正确。完成测试后,请确保删除此文件。
数据库连接正常工作
如果确定数据库用户名和密码错误,接下来您需要重置用户名和密码。在cPanel中,点击“MySQL数据库”。
cPanel 控制面板之MySQL数据库
向下滚动并创建一个新的MySQL用户。尝试选择唯一的用户名和密码(可以使用提供的密码生成器工具生成高强度密码),以免轻易被猜中。然后点击“Create User”。或者,您也可以在此界面上更改当前数据库用户的密码。
创建MySQL用户
然后向下滚动并将新用户添加到数据库中。下一个界面将询问您要分配的特权,选择“All Privileges(所有权限)”。
使用cPanel新增数据库用户
然后使用这些新凭据并更新至wp-config.php文件(更新DB_USER和DB_PASSWORD值)。到此,你也可以使用前面提到的测试文件验证数据库凭证信息是否正确。但如果这未能解决问题,可能是主机名(DB_HOST)错误。某些主机使用不同的值,你可以参阅一些常见数据库主机值列表,或者查看主机相关文档及联系主机提供商提供。有些人可能还会使用127.0.0.1而不是localhost。
如果您已完成上述所有操作,但仍是“建立数据库连接时出错”,继续往下看。
2. 修复损坏的数据库
在某些情况下,可能是数据库已损坏。有时(尽管不是很经常)会发生这种情况,因为随着时间的推移,新插件和主题会不断添加/删除数百张数据表。如果您尝试登录WordPress网站的仪表板并收到以下错误,则表明您的数据库已损坏:“一个或多个数据库表不可用。数据库可能需要修复。” 重要的是要注意,您可能只会在访问WordPress管理后台才看到此错误,而在前端仅看到建立数据库连接错误提示。
WordPress实际上提供可以启动的数据库修复模式。只需将以下内容添加到wp-config.php文件的底部。
define('WP_ALLOW_REPAIR', true);
WordPress修复模式
然后浏览器访问WordPress网站地址:https : //yourdomain.com/wp-admin/maint/repair.php。在页面你可以选择“修复数据库”或“修复并优化数据库”。由于您目前可能正在对站点进行故障排除,因此建议使用“修复数据库”选项,更高效。
WordPress修复数据库
在运行完上述数据库的修复之后,请确保删除添加到wp-config.php文件中的代码行,否则任何人都可以运行修复。如果您使用cPanel,则还可以从MySQL数据库界面中运行修复。
cPanel修复数据
或者,您也可登入phpMyAdmin进行修复。只需登录phpMyAdmin,选择需要修复的网站对应的数据库,然后选择所有表。然后从下拉菜单中单击“修复表”。这实际上只是在运行REPAIR TABLE命令。
通过phpMyAdmin修复表
最后,你想更“装逼”些,还可以选择使用WP-CLI通过以下命令运行修复:
wp db repair
3. 修复损坏文件
“建立数据库连接时出错”另外一个可能原因是文件已损坏。无论这是由于通过FTP传输文件的问题,黑客获得了访问您的站点的权限还是主机的问题,您都可以快速解决此问题。特别提醒,尝试此操作之前先备份您的网站。
基本上,您只需要替换WordPress的核心版本,无需理会插件,主题或媒体。你可以通过访问WordPress.org下载最新版本的WordPress。
下载WordPress
在您的计算机上解压缩该文件,然后删除wp-content文件夹以及wp-config-sample.php文件。
删除wp-content 目录及WP初始配置文件
然后,通过SFTP将其余文件上传到您的站点,覆盖现有文件。这将替换所有有问题的文件,并确保您拥有干净且未损坏的新文件。建议这样做后清除浏览器缓存。然后检查您的WordPress网站以查看错误是否仍然存在。
4. 数据库服务器问题
如果上述方法均不能帮助您解决问题,那么强烈建议您与托管服务提供商联系,因为这可能是数据库服务器的问题。例如,如果数据库并发连接太多,则可能会产生错误。因为很多主机在服务器上都限制了一次允许连接的数量。利用缓存插件可以帮助最大程度地减少您站点上的数据库交互。
这个问题在共享主机上经常发生,因为理论上其他人可能会影响您的站点。这是因为共享主机共同使用服务器上的所有资源。始终建议尽可能使用VPS主机来搭建WordPress网站,至少主机资源由自己分配利用而不会变得人满为患。独立主机通常对环境进行微调,即可处理专门针对WordPress网站的大量流量。
5. 恢复至最近备份
最后在情非得已之时,恢复最近备份数据。在某些情况下,如果无需担心发生错误之时与上一次备份之间产生的数据,这可能是解决问题的较快方法。许多服务器提供商都提供备份数据恢复支持。请记住,您可能需要同时还原数据库和文件。
如果您是宝塔用户,则可以通过宝塔控制面板的计划任务,创建备份数据库或者备份网站计划任务,支持按周期定时备份,非常方便。
宝塔控制面板备份计划
如果是恢复数据库备份,您只需要进入宝塔控制面板,进入数据库菜单,找到你需要恢复的数据库,点击“有备份”,选择需要恢复的备份版本,点击“恢复”即可。
WordPress数据库恢复
如果是恢复网站备份,则可以通过访问宝塔控制面板-文件,进入/www/backup/site目录,找到网站备份压缩包,将压缩包解压到对应网站目录即可。
WordPress网站数据恢复
小结
如您所见,有很多方法可以修复WordPress中的“建立数据库时连接出错”。最常见的是wp-config.php文件中的无效凭据。检查以确保它们正确是最好的起点。您对网站的最后一件事就是体验停机时间。
希望上述步骤之一可以帮助您恢复并运行您的网站。请记住,如果需要,您始终可以从备份中恢复您的站点。
评论留言
唇枪舌剑 (1)
wwwwh
2024.2.19 15:02
我一直是这个错误,试了很多遍。有高手帮忙不