0%

正威網路行銷工作室,專注於基隆、台北與全台客製化網頁設計,提供專業 RWD 響應式、SEO 搜尋引擎優化、品牌形象設計與網站維護託管服務。

搜尋文章
聯絡資訊
地址基隆市仁二路 220 號 5 樓
追蹤我們

WordPress 出現「建立資料庫連線時發生錯誤」怎麼辦?

WordPress 出現「建立資料庫連線時發生錯誤」怎麼辦? 封面

打開網站,整個畫面只剩一行字:

建立資料庫連線時發生錯誤

(英文版是「Error establishing a database connection」)

首頁、文章全部都是這行字,後台也進不去。這篇說明它是什麼意思、最常見的 3 個原因,以及照什麼順序檢查。

「建立資料庫連線時發生錯誤」是什麼意思

WordPress 網站的內容,文章、頁面、設定、會員資料,都存在一個 MySQL 資料庫裡。每次有人打開網頁,WordPress 都要先連上資料庫,把內容拿出來,才能組成網頁。

連不上資料庫,WordPress 什麼都拿不到,只能顯示這行字。

WordPress 用來連線的資料,寫在網站根目錄的 wp-config.php 裡,一共 4 個:

PHP
define( 'DB_NAME', '資料庫名稱' );
define( 'DB_USER', '資料庫使用者' );
define( 'DB_PASSWORD', '資料庫密碼' );
define( 'DB_HOST', 'localhost' );

連不上,要嘛是這 4 個資料不對,要嘛是資料庫那一端出了狀況。另外還有一種情況:資料庫連得上,但裡面的資料表壞了,前台也會顯示同一行字。

先做兩件事,判斷是哪一種

一、打開後台看看。 在網址後面加上 /wp-admin。前台只會顯示簡短的一行,後台會顯示比較詳細的訊息:

  • 出現「出現這個頁面便代表這個網站的 wp-config.php 檔案中的資料庫使用者名稱及密碼不正確,或是系統無法連線至資料庫伺服器……」:真的連不上資料庫,是原因一或原因二。
  • 出現「一或多個資料表無法使用。資料庫需要進行修復。」:資料庫連得上,但裡面的資料表壞了,直接看原因三。

二、連不上的話,想想最近有沒有改過什麼。

  • 什麼都沒改,網站突然就這樣:多半是主機的資料庫出狀況,看原因一。
  • 剛搬家、換主機,或剛在主機控制台改過資料庫密碼:多半是 wp-config.php 的資料沒跟著改,看原因二。

原因一:主機的資料庫暫時出狀況

網站好好的,什麼都沒改,突然出現這行字,最常見的是資料庫那一端的問題:

  • 主機的資料庫服務當掉、正在維護或重新啟動。
  • 網站一下子湧進大量連線,例如被大量爬蟲、攻擊流量灌爆,資料庫忙不過來。
  • 共用主機上,同一台主機的其他網站把資源用光。

這時候 wp-config.php 不用動。可以這樣確認:

  • 主機上如果還有別的網站,看看是不是也打不開。
  • 看主機商的狀態公告,或直接聯絡主機商,請他們確認資料庫服務。

如果過一陣子自己恢復,之後又反覆發生,就要和主機商一起找原因,可能是主機資源不夠,或網站一直被大量流量灌。查主機負載的方法在〈網站主機 SSH 常用指令與 CPU 飆高排查〉。

原因二:wp-config.php 的連線資料不對

網站搬家、換主機,或在主機控制台改了資料庫密碼,卻沒有同步改 wp-config.php,WordPress 就會拿舊的資料去連線,當然連不上。

檢查方式:

  1. 用主機的檔案管理員,或 FTP、SFTP 軟體,打開網站根目錄的 wp-config.php。改之前先下載一份備份。
  2. 到主機控制台的資料庫管理頁面,對照 4 個資料:
  • DB_NAME:資料庫名稱。很多主機會在前面自動加上帳號名稱,例如 帳號_wp,要整串一樣。
  • DB_USER:資料庫使用者名稱,同樣要整串一樣。
  • DB_PASSWORD:密碼。不確定的話,在控制台重新設一個新密碼,再填進 wp-config.php。
  • DB_HOST:大部分主機是 localhost,但有些主機的資料庫在另一台機器,要填主機商提供的位址,在主機商的說明文件裡找得到。
  1. 也要確認這個資料庫使用者,有被加入這個資料庫、而且有權限。控制台通常有「把使用者加入資料庫」的設定。

想確認帳號密碼到底對不對,可以用同一組資料登入主機控制台裡的 phpMyAdmin。phpMyAdmin 也登不進去,就是帳號密碼的問題。

wp-config.php 裡有資料庫密碼,不要把整個檔案貼到網路上問問題。網站搬家要注意的其他事情,在〈網站搬家、換主機要注意什麼?〉。

原因三:資料表損壞

有時候資料庫連得上,但裡面某些資料表壞了。這時候前台一樣顯示「建立資料庫連線時發生錯誤」,後台則是「一或多個資料表無法使用。資料庫需要進行修復。」

WordPress 內建一個修復頁,可以這樣用:

  1. 打開 wp-config.php,在「That's all, stop editing!」那一行的上面加一行:
PHP
define( 'WP_ALLOW_REPAIR', true );
  1. 打開 你的網址/wp-admin/maint/repair.php。
  2. 頁面上有兩個按鈕:「修復資料庫」和「修復並最佳化資料庫」。先按「修復資料庫」就好;最佳化要花比較久,執行時會鎖住資料庫。
  3. 修復完會列出每個資料表的結果,最後提示你把剛才那一行從 wp-config.php 移除。
  4. 一定要把那一行刪掉。

為什麼一定要刪?我們在測試站實測:加了這一行之後,修復頁不用登入就能打開,任何人知道網址都能按下修復。修復完不刪,等於把一個可以操作資料庫的按鈕留給所有人。

沒有加這一行時,打開修復頁只會看到「如需允許這個頁面自動修復資料庫問題,請將下列程式碼加入這個網站的 wp-config.php 檔案」的說明,不會執行任何動作。

修復頁處理不了的損壞,就要從備份還原資料庫。這也是為什麼資料庫要每天備份,做法在〈網站備份怎麼做?〉。

修好之後

  • 前台、後台都打開看看,確認文章、頁面、會員資料都在。
  • 如果是原因一反覆發生,記下每次發生的時間給主機商,比較容易找出原因。
  • 如果是原因三,想一想資料表為什麼會壞:主機突然斷電、空間滿了、資料庫寫到一半中斷,都是常見原因。

延伸閱讀

網站打不開的每一分鐘,客人都看在眼裡。正威網路行銷是 25 年經驗的基隆網頁設計工作室,網站管家年費包含主機資料每日備份和系統、外掛與安全性更新,台北與全台客戶也歡迎免費諮詢。

分享這篇文章

返回文章列表更多「Wordpress代碼教學」文章

發表留言

還沒有人留言,歡迎第一個分享你的想法或問題。留言經審核後才會顯示,Email 不會公開。

讓我們一起打造
您的專屬網站!