如果你使用網路已有一段時間,你應該曾經看到過這個錯誤。有許多原因可能導致建立資料庫連線時出現錯誤,作為一個 WordPress 的初學者,這可能非常令人頭痛,尤其是當你什麼都沒做,但是某一天他就自己出現了的時候。我前幾天在自己的網站上遇到了這個問題,而且花了 20 多分鐘才發現原因並解決問題。在本文中,我們將說說如何修復 WordPress 中建立資料庫連接錯誤的辦法。
注意:在進行任何資料庫更改之前,請確保你已經備份你的網站。
為什麼會出現這個錯誤?
簡而言之,這個錯誤會出現,是因為 WordPress 連不到你的 MySQL 資料庫。每個 WordPress 無法建立資料庫連接的原因可能會有所不同。可能是因為你的資料庫登錄憑證錯誤或已被更改(很大一部分的時候是這個原因,檢查一下 wp-config.php 這個檔案的設定是否正確),或是因為你的資料庫伺服器沒有回應,又或者是您的資料庫已損壞。根據我們的經驗,大多數時候這個錯誤是由於某種伺服器錯誤而發生的,但是也可能有其他的因素。讓我們看看如何解決這個問題。
這是 wp-admin 的問題嗎?
你應該做的第一件事是確認你在網站的前端和後端(wp-admin)都得到相同的錯誤。如果兩個頁面上的錯誤信息都是相同的「建立資料庫連接錯誤」,那麼繼續進行下一步。如果你在 wp-admin 上得到不同的錯誤,例如「一個或多個資料庫表不可用,資料庫可能需要修復」,那麼你需要修復你的資料庫。
你可以在你的 wp-config.php 文件中添加下面這行來做到這一點。
[php] define('WP_ALLOW_REPAIR', true);[/php]
把它加在 wp-config.php 檔案中的 That's all, stop editing! Happy blogging! 這行前面即可。
一旦你完成了,你可以從這個頁面看到設置:
[html] https://www. 你的網址.com/wp-admin/maint/repair.php[/html]
請記住,確定這個設置後,用戶無需登錄就可使用此功能。這是因為它的主要目的是修復損壞的資料庫,當資料庫損壞時,用戶通常不能登錄。所以一旦你完成了修復和優化你的資料庫,一定要從你的 wp-config.php 中刪除這行,否則任何人都有機會存取你的資料庫。
如果這招不能解決問題,或者你在修復運行時遇到問題,請繼續往下看,可能還有其他的解決方案。
檢查 WP-Config 文件
wp-config.php 可能是整個 WordPress 中最重要的文件。這是您指定 WordPress 連接資料庫的詳細信息的地方。如果您更改了根密碼或資料庫用戶密碼,則還需要更改此文件。首先你應該經常檢查是否你的 wp-config.php 文件中的所有內容都是一樣的。
[php] define('DB_NAME', 'database-name');define('DB_USER', 'database-username');
define('DB_PASSWORD', 'database-password');
define('DB_HOST', 'localhost');
[/php]
記住你的 DB_HOST 值可能並不總是本地主機。根據主機商,它會有所不同。對於 HostGator,BlueHost,Site5 等網路託管公司,它是本地主機。你可以在這裡找到其他的主機值。
有些人建議他們用 IP 替換 localhost 來解決問題。在本地伺服器環境中運行 WordPress 時,常見這類問題。例如,在 MAMP 上,更改為 IP 時的 DB_Host 值似乎可以工作。
[php] define('DB_HOST', '127.0.0.1:8889');[/php]
每個線上網絡託管服務的 IP 都有所不同。如果這個文件中的所有內容都是正確的(確保你檢查了錯別字),那麼就是伺服器端有問題。
檢查您的 Web 主機(MySQL 伺服器)
當您的網站被大量流量所佔用時,您通常會發現資料庫連接錯誤。基本上,只是因為你的主機伺服器不能處理負載(特別是當你在共享主機),您的網站變得非常慢,甚至有些用戶輸出錯誤。所以你應該做的事情是打電話或與你的託管服務提供商聊天,並詢問他們你的 MySQL 服務器是否有回應。
對於那些想測試 MySQL 伺服器是否正在運行的用戶,可以做一些事情。在同一台伺服器上測試其他網站,看看他們是否有問題。如果他們也得到相同的錯誤,那麼絕對是你的 MySQL 伺服器有問題。如果你沒有任何其他網站在這個相同的託管帳戶,只需要使用你的 cPanel,嘗試訪問 phpMyAdmin 並連接資料庫。如果你可以連接,那麼我們需要驗證你的資料庫用戶是否有足夠的權限。建立一個名為 testconnection.php 的新文件並貼上下面的代碼:
[php] <?php $link = mysql_connect('localhost', 'root', 'password'); if (!$link) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully'; mysql_close($link); ?>[/php]
確保更換用戶名和密碼。如果連接成功,那麼這意味著你的用戶有足夠的權限,而還有其他的東西是錯誤的。回到您的 wp-config 文件,確保所有內容都正確(重新掃描拼寫錯誤)。
如果你不能通過 phpMyAdmin 連接到資料庫,那麼就是你的伺服器出現問題。這並不一定代表你的 MySQL 伺服器關閉了。這可能表示你的用戶沒有足夠的權限。
在我們的例子中,我們的 MySQL 伺服器正在運行。除了 WPBeginner 之外,伺服器上的所有其他網站都能正常工作。當我們試圖進入我們的 phpMyAdmin,最終得到這個錯誤:
[html] #1045 – Access denied for user "foo'@'%" (using password: YES)[/html]
我們與 HostGator 通了電話,他們很快發現了這個問題。不知怎的,我們的用戶的權限被重置。沒有人清楚這是怎麼發生的,但顯然這是原因。用戶權限恢復之後,網站又再一次正常運作。
所以,如果你在連接到 phpMyAdmin 或接通 testconnection.php 時得到拒絕連接的錯誤結果,那麼你應該聯繫您的託管商並馬上讓他們來修復它。
其他的解決方案
要注意,這些可能不適合你。如果出現任何問題,請自行承擔風險,並確保備份充足。
Deepak Mittal 說他的客戶收到了資料庫需要修復的錯誤。即使在修復資料庫之後,錯誤也沒有消失。他做了各式各樣的嘗試,最後發現問題出在網站的網址。顯然這被變更了,導致錯誤持續。他透過 phpMyAdmin 運行 SQL 查詢:
[sql] UPDATE wp_options SET option_value='YOUR_SITE_URL' WHERE option_name='siteurl'[/sql]
確保使用實際的網址替換 YOUR_SITE_URL。如果您更改了默認的 WordPress 資料庫字首,則 wp_options 將會有所不同。
如果上述的方案都沒有用的話,你可以試著把 wp_options 表中 active_plugins 的內容清空,並編輯 recently_edited 的內容。可能也會有效。
總之,這是一個非常令人頭痛的錯誤。你嘗試過哪些可能對你有用的方法呢?如果你有找到其他解決方案也歡迎提供,讓其他人就不必浪費太多時間重新走一次冤枉路。