打開WordPress出現“error establishing a database connection”錯誤如何解決
[重要通告]如您遇疑難雜癥,本站支持知識付費業務,掃右邊二維碼加博主微信,可節省您寶貴時間哦!
今天打開一個客戶的服務器,系統linux的,然后就出現了“error establishing a database connection”這其實就是連接數據庫錯誤,可是找了很久也沒發現啥,一切都是正常的很是郁悶,最后處理的方式多重啟了幾次系統就好了,一直也沒想出啥問題;
最簡單的方法就是重啟服務器或者用service mysqld restart命令(MySQL數據庫)或者systemctl restart mariadb.service命令(MariaDB數據庫)可以暫時解決問題,過一段時間還會出現。
再次分析原因可能是Apache2占用內存過高,MySQL/MariaDB運行一段時間后會自動退出所致,解決方法:
1、將Apache2換成Nginx或其他輕量級Web服務器。
2、不想更換Apache2的可以增大服務器物理內存或添加Swap交換文件。
3、不想更換Apache2也不想增加服務器物理內存,且網站訪問量不大,可以嘗試修改Apache2配置文件(文件路徑/etc/httpd/conf/httpd.conf)。Apache2目前有三種穩定的MPM(Multi-Processing Module,多進程處理模塊)模式,分別是prefork,worker和event。(查看Apache2的MPM模式,可以使用httpd -V命令。)
編輯/etc/httpd/conf/httpd.conf文件,添加下面內容:
|
說明:
|
注:在Apache2.3.13以前的版本MaxRequestWorkers被稱為MaxClients。此外,設置ServerLimit參數最好與MaxRequestWorkers的值保持一致。
恩,貌似還沒有解決我的問題,那么,我們使用WordPress提供的調試機制來看看到底是哪里有問題吧!
首先應該做的是確保在站點的前端和站點的后端(wp-admin)上都得到相同的錯誤。如果錯誤消息在兩個頁面上都相同“建立數據庫連接時出錯”。我們可以按照下面的步驟執行。
在wp-config.php文件中添加以下代碼:
|
保存以后,我們執行下面的url來訪問:
http://域名/wp-admin/maint/repair.php
訪問該URL的主要功能是用來修復損壞的數據庫。修改完成后,我們需要從wp-config.php文件中刪除上面添加的代碼。
如果您更改了root密碼或數據庫用戶密碼,那么您還需要更改此文件wp-config.php。確保配置的數據庫的用戶名和密碼都正確。
define('DB_NAME',?'數據庫名');?
define('DB_USER',?'數據庫用戶名');?
define('DB_PASSWORD',?'數據庫密碼');?
define('DB_HOST',?'主機');
注意在輸入以上信息時不要輸錯。另外當我們的網站流量過大時,也會出現數據庫連接錯誤。
如果同一個服務器上有多個服務,可以訪問其他服務看看是否正常,判斷是不是數據庫服務器導致的。
網上的方法,第一種:看你的VPS控制面板(一般寶塔或者wdcp)能不能連上,如果你的控制面板連不上的話那就說明是你的vps中的mysql服務沒有啟動,所以這個時候你需要啟動你的mysql服務即可。
啟動服務如下service mysqld startservice?pureftpd startservice wdapache startservice httpd startservice nginxd start
第二種:磁盤空間可能滿了
是的,你的vps磁盤空間滿了,也會導致mysql服務啟動不起來,這個時候需要清理一下你的vps硬盤。
在wdcp里面你可以看到磁盤的數據使用量,用putty連接你的VPS也是可以查看的。
這個問題是我親自遇到的。
另外還需要判斷,你所使用的用戶的權限是否足夠。還有是否設置了拒絕遠程連接。
最后,請注意任何操作數據庫前,請注意備份,以免發生意外。
第三種:控制面板可以打開,只是一個網站的數據庫連接不上
那么這個情況絕大多數都是因為你的這個網站的mysql數據庫里面有一張數據表出了問題。
這個時候你需要登錄你的控制面板,進入到phpmyadmin里面,找到你的數據庫,查看你那個數據庫里面是不是有一張表處于“使用中”狀態。
選中這樣表進行修復即可,你的網站就會恢復正常。
用PHPADMIN修復
domain/phpmyadmin/
發現,這個表確實崩潰了,但不能修復,因為沒提供修復選項,而其他正常的表卻提供了修復選項,真不知道是什么邏輯。
看來,也只能找其他的修復方法了。
最終,找到一個可行的方法
以下是參照資料
# mysql -u root -p
Enter password:mysql> use wordpress;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> select * from wp_posts;
ERROR 145 (HY000): Table './wordpress/wp_posts' is marked as crashed and should be repaired
mysql> Bye修復 MySQL 數據庫數據表問題可以由 mysqlcheck 來解決,先用 mysqlcheck 查看一下:
# mysqlcheck -u root -p wordpress
Enter password:
然后添加 –auto-repair 參數自動修復,最好修復前備份一下數據庫:# mysqldump -u root -p wordpress > wordpress.sql
Enter password:# mysqlcheck -u root -p wordpress --auto-repair
Enter password:
wordpress.wp_commentmeta
error : Table upgrade required. Please do "REPAIR TABLE `wp_commentmeta`" or dump/reload to fix it!
wordpress.wp_comments
error : Table upgrade required. Please do "REPAIR TABLE `wp_comments`" or dump/reload to fix it!
wordpress.wp_links
error : Table upgrade required. Please do "REPAIR TABLE `wp_links`" or dump/reload to fix it!
wordpress.wp_options
error : Table upgrade required. Please do "REPAIR TABLE `wp_options`" or dump/reload to fix it!
wordpress.wp_postmeta
error : Table upgrade required. Please do "REPAIR TABLE `wp_postmeta`" or dump/reload to fix it!
wordpress.wp_posts
error : Table upgrade required. Please do "REPAIR TABLE `wp_posts`" or dump/reload to fix it!
wordpress.wp_term_relationships OK
wordpress.wp_term_taxonomy
error : Table upgrade required. Please do "REPAIR TABLE `wp_term_taxonomy`" or dump/reload to fix it!
wordpress.wp_terms
error : Table upgrade required. Please do "REPAIR TABLE `wp_terms`" or dump/reload to fix it!
wordpress.wp_usermeta
error : Table upgrade required. Please do "REPAIR TABLE `wp_usermeta`" or dump/reload to fix it!
wordpress.wp_users
error : Table upgrade required. Please do "REPAIR TABLE `wp_users`" or dump/reload to fix it!Repairing tables
wordpress.wp_commentmeta OK
wordpress.wp_comments OK
wordpress.wp_links OK
wordpress.wp_options OK
wordpress.wp_postmeta OK
wordpress.wp_posts OK
wordpress.wp_term_taxonomy OK
wordpress.wp_terms OK
wordpress.wp_usermeta OK
wordpress.wp_users OK
mysql 服務設置不當,導致 mysql 連接數量超過限定值,或者應用程序設計有問題,導致大量休眠連接不能及時釋放。
mysql -u root -p
執行指令
show processlist;
查看當前連接數量。
如果進程過多,或存在大量超時的休眠 sleep 連接,編輯/etc/mysql/my.cnf
vim /etc/mysql/my.cnf
在[mysqld]字段處,添加,或去掉注釋
max_connections = 500 #增加 mysql 連接數
wait_timeout = 10 #斷開超過 10 秒的連接
問題未解決?付費解決問題加Q或微信 2589053300 (即Q號又微信號)右上方掃一掃可加博主微信
所寫所說,是心之所感,思之所悟,行之所得;文當無敷衍,落筆求簡潔。 以所舍,求所獲;有所依,方所成!