
打開網站,整個畫面只剩一行字:
建立資料庫連線時發生錯誤
(英文版是「Error establishing a database connection」)
首頁、文章全部都是這行字,後台也進不去。這篇說明它是什麼意思、最常見的 3 個原因,以及照什麼順序檢查。
「建立資料庫連線時發生錯誤」是什麼意思
WordPress 網站的內容,文章、頁面、設定、會員資料,都存在一個 MySQL 資料庫裡。每次有人打開網頁,WordPress 都要先連上資料庫,把內容拿出來,才能組成網頁。
連不上資料庫,WordPress 什麼都拿不到,只能顯示這行字。
WordPress 用來連線的資料,寫在網站根目錄的 wp-config.php 裡,一共 4 個:
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 就會拿舊的資料去連線,當然連不上。
檢查方式:
- 用主機的檔案管理員,或 FTP、SFTP 軟體,打開網站根目錄的
wp-config.php。改之前先下載一份備份。 - 到主機控制台的資料庫管理頁面,對照 4 個資料:
DB_NAME:資料庫名稱。很多主機會在前面自動加上帳號名稱,例如帳號_wp,要整串一樣。DB_USER:資料庫使用者名稱,同樣要整串一樣。DB_PASSWORD:密碼。不確定的話,在控制台重新設一個新密碼,再填進wp-config.php。DB_HOST:大部分主機是localhost,但有些主機的資料庫在另一台機器,要填主機商提供的位址,在主機商的說明文件裡找得到。
- 也要確認這個資料庫使用者,有被加入這個資料庫、而且有權限。控制台通常有「把使用者加入資料庫」的設定。
想確認帳號密碼到底對不對,可以用同一組資料登入主機控制台裡的 phpMyAdmin。phpMyAdmin 也登不進去,就是帳號密碼的問題。
wp-config.php 裡有資料庫密碼,不要把整個檔案貼到網路上問問題。網站搬家要注意的其他事情,在〈網站搬家、換主機要注意什麼?〉。
原因三:資料表損壞
有時候資料庫連得上,但裡面某些資料表壞了。這時候前台一樣顯示「建立資料庫連線時發生錯誤」,後台則是「一或多個資料表無法使用。資料庫需要進行修復。」
WordPress 內建一個修復頁,可以這樣用:
- 打開
wp-config.php,在「That's all, stop editing!」那一行的上面加一行:
define( 'WP_ALLOW_REPAIR', true );- 打開
你的網址/wp-admin/maint/repair.php。 - 頁面上有兩個按鈕:「修復資料庫」和「修復並最佳化資料庫」。先按「修復資料庫」就好;最佳化要花比較久,執行時會鎖住資料庫。
- 修復完會列出每個資料表的結果,最後提示你把剛才那一行從
wp-config.php移除。 - 一定要把那一行刪掉。
為什麼一定要刪?我們在測試站實測:加了這一行之後,修復頁不用登入就能打開,任何人知道網址都能按下修復。修復完不刪,等於把一個可以操作資料庫的按鈕留給所有人。
沒有加這一行時,打開修復頁只會看到「如需允許這個頁面自動修復資料庫問題,請將下列程式碼加入這個網站的 wp-config.php 檔案」的說明,不會執行任何動作。
修復頁處理不了的損壞,就要從備份還原資料庫。這也是為什麼資料庫要每天備份,做法在〈網站備份怎麼做?〉。
修好之後
- 前台、後台都打開看看,確認文章、頁面、會員資料都在。
- 如果是原因一反覆發生,記下每次發生的時間給主機商,比較容易找出原因。
- 如果是原因三,想一想資料表為什麼會壞:主機突然斷電、空間滿了、資料庫寫到一半中斷,都是常見原因。
延伸閱讀
網站打不開的每一分鐘,客人都看在眼裡。正威網路行銷是 25 年經驗的基隆網頁設計工作室,網站管家年費包含主機資料每日備份和系統、外掛與安全性更新,台北與全台客戶也歡迎免費諮詢。






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