在網上搜索了不少的方法都沒解決,但我們看上去錯誤提示應該是數據庫配置的問題了,經過我反復的排查及網上文件參考還是解決了此問題,下面我們一起來看解決辦法.
打開 wordpress提示:
“Error establishing a database connection”,這段話意思是連接數據時出現錯誤.
找到下面這些代碼:
- /** WordPress數據庫的名稱,替換掉 “putyourdbnamehere” */
- define('DB_NAME', 'wordpress');
- /** MySQL數據庫用戶名,替換掉 “usernamehere” */
- define('DB_USER', 'root');
- /** MySQL數據庫密碼,替換掉 “yourpasswordhere” */
- define('DB_PASSWORD', 'root');
- /** MySQL主機名 */
- define('DB_HOST', 'localhost');
DB_NAME為WordPress數據庫的名稱
DB_USER為MySQL數據庫用戶名
DB_PASSWORD為MySQL數據庫密碼
DB_HOST為MySQL主機名,一般默認localhost不用修改,特殊的可以修改成 localhost:3306/wordpress 這種形式.
但還是解決不了于是就有了下面的解決過程,WORDPRESS出現這種情況的原因可能是:
1、無法連接到Wordpress使用的數據庫.
你的wp-config.php中的數據庫用戶名和密碼錯誤,或者你的數據庫所在服務器掛掉了,也有可能是服務商短時間內限制(訪問量突然暴漲的博客或使用一些消耗數據庫連接的WP插件).
解決辦法是,確認wp-config.php中的用戶名和密碼信息正確,確認WP使用的數據庫服務器沒有掛掉(可以ping或直接重啟?),確認數據庫連接方式,是遠程連接還是本地連接,有些配置的遠程連接的可能出現連不上數據庫的情況,也就會出現這個“Error establishing a database connection”提示,一般虛擬空間(GD的空間使用的遠程數據庫連接)或合租空間都是使用的本地連接(localhost).
2、若服務器數據庫是剛剛升級到 mysql 5.0 以上,之前WP博客正常可訪問.
這可能是由于mysql 5.0采用了一種新的密碼驗證機制,這需要客戶端的版本要在4.0以上(PHP中的MYSQL客戶端可以查看phpinfo得到),連接數據庫時是用舊的密碼機制,這會出現“Client does not support authentication protocol requested by server” 這樣的錯誤提示,wordpress中就提示“Error establishing a database connection (可能密碼錯誤)”.
解決辦法:
方法1、在mysql中為wordpress數據庫新建一個控制賬戶,然后修改wp-config.php中的數據庫用戶名和密碼配置信息即可,方便簡單.
方法2、在mysql下:
- mysql> SET PASSWORD FOR
- -> ‘clin003′@’clin003.com’ = OLD_PASSWORD(‘newpwd’);
- mysql> FLUSH PRIVILEGES;
這里的clin003替換成使用wordpress數據庫的用戶名,clin003.com替換成localhost或者某個域名,newpwd是該用戶對應的密碼.
還有一點是,查看phpinfo(),找MYSQL_SOCKET顯示的mysql.sock的路徑,確認mysql.sock的確在此路徑下,否則需要做一個符號鏈接,比如phpinfo里顯示MYSQL_SOCKET路徑為/var/lib/mysql/mysql.sock,但實際上位于 /tmp/mysql.sock,可在命令行輸入:
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
3、mysql服務設置不當,導致mysql連接數量超過限定值,或者應用程序設計有問題,導致大量休眠連接不能及時釋放.
解決辦法:
登陸mysql服務器:mysql -u root -p
使用命令:show processlist;
查看當前連接數量,如果進程過多,或存在大量超時的休眠sleep連接,編輯如下代碼:
/etc/mysql/my.cnf
在[mysqld]字段處,添加或去掉注釋:
max_connections = 500 #增加mysql連接數
wait_timeout = 10 #斷開超過10秒的連接
4、是wp_options數據庫表錯誤,我把整個數據庫表修復和優化了一次.
wp_options中的表前綴wp根據自己實際情況查看,WORDPRESS出現錯誤時,可以通過 DEBUG 參數調試.
根據Wp-config.php的調試功能排錯.
1、在 wp-config.php 有個 debug 的參數,打開這個參數,修改為:
2、根據報錯提示解決問題,比如以下錯誤:
- WordPress database error: [Table './clin003_com/wp_options' is marked as crashed and should be repaired]
- SELECT autoload FROM wp_options WHERE option_name = ‘_transient_doing_cron’
- WordPress database error: [Table './clin003_com/wp_options' is marked as crashed and should be repaired]
- SELECT autoload FROM wp_options WHERE option_name = ‘_transient_timeout_doing_cron’
- WordPress database error: [Table './clin003_com/wp_options' is marked as crashed and should be repaired]
- SELECT option_value FROM wp_options WHERE option_name = ‘_transient_doing_cron’ LIMIT 1
wp_options 表壞了,需要被修復,使用 mysql 客戶端,進 mysql 使用修復的命令修復:
mysql>repair table wp_options;
也可以通過phpMyAdmin來進行修復.
3、問題解決,關掉 DEBUG.
根據mysql的日志記錄排錯,在mysql的log日志文件:mysql/data/里面找到一個.err結尾的文件,打開,看見了一排:
‘./clin003_com/wp_options’ is marked as crashed and should be repaired
‘./clin003_com/wp_options’ is marked as crashed and should be repaired
‘./clin003_com/wp_options’ is marked as crashed and should be repaired
修復辦法參考上面.
新聞熱點
疑難解答
圖片精選