WordPress建立資料庫連線時出錯(Error Establishing a Database Connection)終極解決方案

錯誤型別:
資料庫錯誤
錯誤名稱:
建立数据库连接时出错
英文名稱:
Error Establishing a Database Connection
錯誤描述:
数据库损坏或者登录凭据不正确,损坏的WordPress文件,数据库服务器问题和流量激增都有可能导致此错误发生。

Error Establishing a Database Connection解決方案

“ 建立資料庫連線時出錯(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網站

備份WordPress網站

當然你還可以通過SFTP等工具,進入伺服器執行手動備份網站檔案,及通過phpMyAdmin手動備份MySQL資料庫。備份成功後,就該開始對“建立資料庫連線時出錯”問題進行故障排除了。

參考閱讀:《使用BackWPup外掛備份WordPress教學》、《如何安全備份WordPress部落格網站資料?

1.檢查資料庫登入憑據

首先要做的是檢查以確保WordPress配置檔案的資料庫登入憑據正確。這是迄今為止“建立資料庫連線時出錯”報錯的最常見原因,特別是在遷移網站到新的託管服務提供商之後。WordPress網站的連線詳細資訊儲存在wp-config.php檔案中,該檔案通常位於WordPress網站的根目錄下。

它包含四個重要資訊,這些資訊都必須正確才能成功進行連線資料庫。

資料庫名稱

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// ** MySQL settings ** //
/** The name of the database for WordPress */
define('DB_NAME', 'xxxxxx');
// ** MySQL settings ** // /** The name of the database for WordPress */ define('DB_NAME', 'xxxxxx');
// ** MySQL settings ** // 
/** The name of the database for WordPress */ 
define('DB_NAME', 'xxxxxx');

資料庫使用者名稱

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
/** MySQL database username */
define('DB_USER', 'xxxxxx');
/** MySQL database username */ define('DB_USER', 'xxxxxx');
/** MySQL database username */ 
define('DB_USER', 'xxxxxx');

資料庫密碼

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
/** MySQL database password */
define('DB_PASSWORD', 'xxxxxxxxx');
/** MySQL database password */ define('DB_PASSWORD', 'xxxxxxxxx');
/** MySQL database password */ 
define('DB_PASSWORD', 'xxxxxxxxx');

主機名(伺服器)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
/** MySQL hostname */
define('DB_HOST', 'localhost');
/** MySQL hostname */ define('DB_HOST', 'localhost');
/** MySQL hostname */ 
define('DB_HOST', 'localhost');

要訪問wp-config.php檔案,您可以通過SFTP連線到站點並瀏覽到站點的根目錄。或者,如果您使用的是寶塔,則可以進入寶塔控制面板單擊“檔案”,瀏覽到站點的根目錄,然後右鍵單擊以編輯檔案。

寶塔檔案管理

寶塔檔案管理

以下是開啟檔案後的示例。

wp-config.php檔案資料庫訪問憑證

wp-config.php檔案資料庫訪問憑證

現在,您需要對照當前值及伺服器資料庫真實值,以確保它們正確無誤。對於寶塔使用者,請按照以下說明進行操作。

檢查寶塔面板中的資料庫憑據

您需要登入寶塔面板,進入資料庫即可找到網站對應的資料庫,找到資料庫名、使用者名稱及密碼等資訊 。

寶塔面板檢視資料庫賬號密碼

寶塔面板檢視資料庫賬號密碼

然後核對wp-config.php檔案的對應資訊,確保兩邊的資訊一致即可,非常方便。(或者這也就是國內眾多站長選擇使用寶塔面板的原因)

檢查cPanel面板中的資料庫憑據

如果你是使用cPanel管理主機,整個步驟稍微有點複雜。

首先要檢查的是資料庫名稱。為此,您需要進入cPanel控制面板登入phpMyAdmin 。

cPanel控制面板的phpMyAdmin

cPanel控制面板的phpMyAdmin

在左側選單找到你的網站對應的資料庫名稱。忽略“information_schema”資料庫,因為這是主機使用的資料庫。然後,將該名稱與wp-config.php檔案中的DB_NAME值進行比較。如果它們匹配,那麼這不是問題。如果它們不匹配,那麼您需要更新wp-config.php檔案。

cPanel 資料庫名稱

cPanel 資料庫名稱

您還可以通過確保資料庫是否包含你網站的URL來驗證這是正確的資料庫。只需單擊資料庫,然後單擊wp_options表(出於安全目的,此名稱可能稍有不同,例如wpxx_options)。在表格的頂部,您將看到網站URL和名稱的值。如果這些與您當前站點匹配,說明這個是你的網站的資料庫。

在phpMyAdmin檢查網站URL

在phpMyAdmin檢查網站URL

如果資料庫名稱正確,但是在建立資料庫連線時仍然出現錯誤,那你還需要檢查使用者名稱和密碼。為此,你需要在WordPress網站的根目錄中建立一個新的PHP檔案(隨意命名,例如checkdb.php),並輸入以下程式碼,需使用wp-config.php檔案中的值替換為db_user和db_password的值。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?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);
<?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);
<?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錯誤:訪問被拒絕

MySQL錯誤:訪問被拒絕

但如果是“Database connection is working properly.(資料庫連線正常工作)”,則說明資料庫使用者名稱和密碼正確。完成測試後,請確保刪除此檔案。

資料庫連線正常工作

資料庫連線正常工作

如果確定資料庫使用者名稱和密碼錯誤,接下來您需要重置使用者名稱和密碼。在cPanel中,點選“MySQL資料庫”。

cPanel 控制面板之MySQL資料庫

cPanel 控制面板之MySQL資料庫

向下滾動並建立一個新的MySQL使用者。嘗試選擇唯一的使用者名稱和密碼(可以使用提供的密碼生成器工具生成高強度密碼),以免輕易被猜中。然後點選“Create User”。或者,您也可以在此介面上更改當前資料庫使用者的密碼。

建立MySQL使用者

建立MySQL使用者

然後向下滾動並將新使用者新增到資料庫中。下一個介面將詢問您要分配的特權,選擇“All Privileges(所有許可權)”。

使用cPanel新增資料庫使用者

使用cPanel新增資料庫使用者

然後使用這些新憑據並更新至wp-config.php檔案(更新DB_USER和DB_PASSWORD值)。到此,你也可以使用前面提到的測試檔案驗證資料庫憑證資訊是否正確。但如果這未能解決問題,可能是主機名(DB_HOST)錯誤。某些主機使用不同的值,你可以參閱一些常見資料庫主機值列表,或者檢視主機相關文件及聯絡主機提供商提供。有些人可能還會使用127.0.0.1而不是localhost。

如果您已完成上述所有操作,但仍是“建立資料庫連線時出錯”,繼續往下看。

2. 修復損壞的資料庫

在某些情況下,可能是資料庫已損壞。有時(儘管不是很經常)會發生這種情況,因為隨著時間的推移,新外掛和主題會不斷新增/刪除數百張資料表。如果您嘗試登入WordPress網站的儀表板並收到以下錯誤,則表明您的資料庫已損壞:“一個或多個資料庫表不可用。資料庫可能需要修復。” 重要的是要注意,您可能只會在訪問WordPress管理後臺才看到此錯誤,而在前端僅看到建立資料庫連線錯誤提示。

WordPress實際上提供可以啟動的資料庫修復模式。只需將以下內容新增到wp-config.php檔案的底部。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
define('WP_ALLOW_REPAIR', true);
define('WP_ALLOW_REPAIR', true);
define('WP_ALLOW_REPAIR', true);

WordPress修復模式

WordPress修復模式

然後瀏覽器訪問WordPress網站地址:https : //yourdomain.com/wp-admin/maint/repair.php。在頁面你可以選擇“修復資料庫”或“修復並優化資料庫”。由於您目前可能正在對站點進行故障排除,因此建議使用“修復資料庫”選項,更高效。

WordPress修復資料庫

WordPress修復資料庫

在執行完上述資料庫的修復之後,請確保刪除新增到wp-config.php檔案中的程式碼行,否則任何人都可以執行修復。如果您使用cPanel,則還可以從MySQL資料庫介面中執行修復。

cPanel修復資料

cPanel修復資料

或者,您也可登入phpMyAdmin進行修復。只需登入phpMyAdmin,選擇需要修復的網站對應的資料庫,然後選擇所有表。然後從下拉選單中單擊“修復表”。這實際上只是在執行REPAIR TABLE命令。

通過phpMyAdmin修復表

通過phpMyAdmin修復表

最後,你想更“裝逼”些,還可以選擇使用WP-CLI通過以下命令執行修復:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp db repair
wp db repair
wp db repair

3. 修復損壞檔案

“建立資料庫連線時出錯”另外一個可能原因是檔案已損壞。無論這是由於通過FTP傳輸檔案的問題,黑客獲得了訪問您的站點的許可權還是主機的問題,您都可以快速解決此問題。特別提醒,嘗試此操作之前先備份您的網站。

基本上,您只需要替換WordPress的核心版本,無需理會外掛,主題或媒體。你可以通過訪問WordPress.org下載最新版本的WordPress

下載WordPress

下載WordPress

在您的計算機上解壓縮該檔案,然後刪除wp-content資料夾以及wp-config-sample.php檔案。

刪除wp-content 目錄及WP初始配置檔案

刪除wp-content 目錄及WP初始配置檔案

然後,通過SFTP將其餘檔案上傳到您的站點,覆蓋現有檔案。這將替換所有有問題的檔案,並確保您擁有乾淨且未損壞的新檔案。建議這樣做後清除瀏覽器快取。然後檢查您的WordPress網站以檢視錯誤是否仍然存在。

4. 資料庫伺服器問題

如果上述方法均不能幫助您解決問題,那麼強烈建議您與託管服務提供商聯絡,因為這可能是資料庫伺服器的問題。例如,如果資料庫併發連線太多,則可能會產生錯誤。因為很多主機在伺服器上都限制了一次允許連線的數量。利用快取外掛可以幫助最大程度地減少您站點上的資料庫互動。

這個問題在共享主機上經常發生,因為理論上其他人可能會影響您的站點。這是因為共享主機共同使用伺服器上的所有資源。始終建議儘可能使用VPS主機來搭建WordPress網站,至少主機資源由自己分配利用而不會變得人滿為患。獨立主機通常對環境進行微調,即可處理專門針對WordPress網站的大量流量。

5. 恢復至最近備份

最後在情非得已之時,恢復最近備份資料。在某些情況下,如果無需擔心發生錯誤之時與上一次備份之間產生的資料,這可能是解決問題的較快方法。許多伺服器提供商都提供備份資料恢復支援。請記住,您可能需要同時還原資料庫和檔案。

如果您是寶塔使用者,則可以通過寶塔控制面板的計劃任務,建立備份資料庫或者備份網站計劃任務,支援按週期定時備份,非常方便。

寶塔控制面板備份計劃

寶塔控制面板備份計劃

如果是恢復資料庫備份,您只需要進入寶塔控制面板,進入資料庫選單,找到你需要恢復的資料庫,點選“有備份”,選擇需要恢復的備份版本,點選“恢復”即可。

WordPress資料庫恢復

WordPress資料庫恢復

如果是恢復網站備份,則可以通過訪問寶塔控制面板-檔案,進入/www/backup/site目錄,找到網站備份壓縮包,將壓縮包解壓到對應網站目錄即可。

WordPress網站資料恢復

WordPress網站資料恢復

小結

如您所見,有很多方法可以修復WordPress中的“建立資料庫時連線出錯”。最常見的是wp-config.php檔案中的無效憑據。檢查以確保它們正確是最好的起點。您對網站的最後一件事就是體驗停機時間。

希望上述步驟之一可以幫助您恢復並執行您的網站。請記住,如果需要,您始終可以從備份中恢復您的站點。

評論留言

脣槍舌劍 (1)

  • wwwwh的頭像

    wwwwh

    2024.2.19 15:02

    我一直是这个错误,试了很多遍。有高手帮忙不

    回覆