打開WordPress出現(xiàn)“error establishing a database connection”錯誤如何解決

[重要通告]如您遇疑難雜癥,本站支持知識付費(fèi)業(yè)務(wù),掃右邊二維碼加博主微信,可節(jié)省您寶貴時(shí)間哦!

今天打開一個(gè)客戶的服務(wù)器,系統(tǒng)linux的,然后就出現(xiàn)了“error establishing a database connection”這其實(shí)就是連接數(shù)據(jù)庫錯誤,可是找了很久也沒發(fā)現(xiàn)啥,一切都是正常的很是郁悶,最后處理的方式多重啟了幾次系統(tǒng)就好了,一直也沒想出啥問題;

最簡單的方法就是重啟服務(wù)器或者用service mysqld restart命令(MySQL數(shù)據(jù)庫)或者systemctl restart mariadb.service命令(MariaDB數(shù)據(jù)庫)可以暫時(shí)解決問題,過一段時(shí)間還會出現(xiàn)。
再次分析原因可能是Apache2占用內(nèi)存過高,MySQL/MariaDB運(yùn)行一段時(shí)間后會自動退出所致,解決方法:

1、將Apache2換成Nginx或其他輕量級Web服務(wù)器。
2、不想更換Apache2的可以增大服務(wù)器物理內(nèi)存或添加Swap交換文件。
3、不想更換Apache2也不想增加服務(wù)器物理內(nèi)存,且網(wǎng)站訪問量不大,可以嘗試修改Apache2配置文件(文件路徑/etc/httpd/conf/httpd.conf)。Apache2目前有三種穩(wěn)定的MPM(Multi-Processing Module,多進(jìn)程處理模塊)模式,分別是prefork,worker和event。(查看Apache2的MPM模式,可以使用httpd -V命令。)
編輯/etc/httpd/conf/httpd.conf文件,添加下面內(nèi)容:

<IfModule?mpm_prefork_module>
StartServers?5
MinSpareServers?5
MaxSpareServers?10
ServerLimit?100
MaxRequestWorkers?100
MaxConnectionsPerChild?2000
</IfModule>

說明:

<IfModule?mpm_prefork_module>
StartServers?5?#推薦設(shè)置:小=默認(rèn)?中=20~50?大=50~100
MinSpareServers?5?#推薦設(shè)置:與StartServers保持一致
MaxSpareServers?10?#推薦設(shè)置:小=20?中=30~80?大=80~120
ServerLimit?150?#推薦設(shè)置:小=500?中=500~1500?大型=1500~3000
MaxRequestWorkers?150?#推薦設(shè)置:小=500?中=500~1500?大型=1500~3000
MaxRequestsPerChild?0?#推薦設(shè)置:小=10000?中或大=10000~500000
</IfModule>

注:在Apache2.3.13以前的版本MaxRequestWorkers被稱為MaxClients。此外,設(shè)置ServerLimit參數(shù)最好與MaxRequestWorkers的值保持一致。
恩,貌似還沒有解決我的問題,那么,我們使用WordPress提供的調(diào)試機(jī)制來看看到底是哪里有問題吧!
首先應(yīng)該做的是確保在站點(diǎn)的前端和站點(diǎn)的后端(wp-admin)上都得到相同的錯誤。如果錯誤消息在兩個(gè)頁面上都相同“建立數(shù)據(jù)庫連接時(shí)出錯”。我們可以按照下面的步驟執(zhí)行。
在wp-config.php文件中添加以下代碼:

define('WP_ALLOW_REPAIR', true);

保存以后,我們執(zhí)行下面的url來訪問:
http://域名/wp-admin/maint/repair.php
訪問該URL的主要功能是用來修復(fù)損壞的數(shù)據(jù)庫。修改完成后,我們需要從wp-config.php文件中刪除上面添加的代碼。
如果您更改了root密碼或數(shù)據(jù)庫用戶密碼,那么您還需要更改此文件wp-config.php。確保配置的數(shù)據(jù)庫的用戶名和密碼都正確。

define('DB_NAME',?'數(shù)據(jù)庫名');?
define('DB_USER',?'數(shù)據(jù)庫用戶名');?
define('DB_PASSWORD',?'數(shù)據(jù)庫密碼');?
define('DB_HOST',?'主機(jī)');

注意在輸入以上信息時(shí)不要輸錯。另外當(dāng)我們的網(wǎng)站流量過大時(shí),也會出現(xiàn)數(shù)據(jù)庫連接錯誤。
如果同一個(gè)服務(wù)器上有多個(gè)服務(wù),可以訪問其他服務(wù)看看是否正常,判斷是不是數(shù)據(jù)庫服務(wù)器導(dǎo)致的。
網(wǎng)上的方法,第一種:看你的VPS控制面板(一般寶塔或者wdcp)能不能連上,如果你的控制面板連不上的話那就說明是你的vps中的mysql服務(wù)沒有啟動,所以這個(gè)時(shí)候你需要啟動你的mysql服務(wù)即可。
啟動服務(wù)如下service mysqld startservice?pureftpd startservice wdapache startservice httpd startservice nginxd start
第二種:磁盤空間可能滿了
是的,你的vps磁盤空間滿了,也會導(dǎo)致mysql服務(wù)啟動不起來,這個(gè)時(shí)候需要清理一下你的vps硬盤。
在wdcp里面你可以看到磁盤的數(shù)據(jù)使用量,用putty連接你的VPS也是可以查看的。
這個(gè)問題是我親自遇到的。

另外還需要判斷,你所使用的用戶的權(quán)限是否足夠。還有是否設(shè)置了拒絕遠(yuǎn)程連接。
最后,請注意任何操作數(shù)據(jù)庫前,請注意備份,以免發(fā)生意外。
第三種:控制面板可以打開,只是一個(gè)網(wǎng)站的數(shù)據(jù)庫連接不上
那么這個(gè)情況絕大多數(shù)都是因?yàn)槟愕倪@個(gè)網(wǎng)站的mysql數(shù)據(jù)庫里面有一張數(shù)據(jù)表出了問題。
這個(gè)時(shí)候你需要登錄你的控制面板,進(jìn)入到phpmyadmin里面,找到你的數(shù)據(jù)庫,查看你那個(gè)數(shù)據(jù)庫里面是不是有一張表處于“使用中”狀態(tài)。
選中這樣表進(jìn)行修復(fù)即可,你的網(wǎng)站就會恢復(fù)正常。

用PHPADMIN修復(fù)
domain/phpmyadmin/
發(fā)現(xiàn),這個(gè)表確實(shí)崩潰了,但不能修復(fù),因?yàn)闆]提供修復(fù)選項(xiàng),而其他正常的表卻提供了修復(fù)選項(xiàng),真不知道是什么邏輯。

看來,也只能找其他的修復(fù)方法了。
最終,找到一個(gè)可行的方法

以下是參照資料

# 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 -A

Database changed
mysql> select * from wp_posts;
ERROR 145 (HY000): Table './wordpress/wp_posts' is marked as crashed and should be repaired
mysql> Bye

修復(fù) MySQL 數(shù)據(jù)庫數(shù)據(jù)表問題可以由 mysqlcheck 來解決,先用 mysqlcheck 查看一下:

# mysqlcheck -u root -p wordpress
Enter password:
然后添加 –auto-repair 參數(shù)自動修復(fù),最好修復(fù)前備份一下數(shù)據(jù)庫:

# 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 服務(wù)設(shè)置不當(dāng),導(dǎo)致 mysql 連接數(shù)量超過限定值,或者應(yīng)用程序設(shè)計(jì)有問題,導(dǎo)致大量休眠連接不能及時(shí)釋放。

mysql -u root -p

執(zhí)行指令

show processlist;

查看當(dāng)前連接數(shù)量。
如果進(jìn)程過多,或存在大量超時(shí)的休眠 sleep 連接,編輯/etc/mysql/my.cnf

vim /etc/mysql/my.cnf

在[mysqld]字段處,添加,或去掉注釋

max_connections = 500 #增加 mysql 連接數(shù)
wait_timeout = 10 #斷開超過 10 秒的連接

問題未解決?付費(fèi)解決問題加Q或微信 2589053300 (即Q號又微信號)右上方掃一掃可加博主微信

所寫所說,是心之所感,思之所悟,行之所得;文當(dāng)無敷衍,落筆求簡潔。 以所舍,求所獲;有所依,方所成!

支付寶贊助
微信贊助

免責(zé)聲明,若由于商用引起版權(quán)糾紛,一切責(zé)任均由使用者承擔(dān)。

您必須遵守我們的協(xié)議,如您下載該資源,行為將被視為對《免責(zé)聲明》全部內(nèi)容的認(rèn)可->聯(lián)系老梁投訴資源
LaoLiang.Net部分資源來自互聯(lián)網(wǎng)收集,僅供用于學(xué)習(xí)和交流,請勿用于商業(yè)用途。如有侵權(quán)、不妥之處,請聯(lián)系站長并出示版權(quán)證明以便刪除。 敬請諒解! 侵權(quán)刪帖/違法舉報(bào)/投稿等事物聯(lián)系郵箱:service@laoliang.net
意在交流學(xué)習(xí),歡迎贊賞評論,如有謬誤,請聯(lián)系指正;轉(zhuǎn)載請注明出處: » 打開WordPress出現(xiàn)“error establishing a database connection”錯誤如何解決

發(fā)表回復(fù)

本站承接,網(wǎng)站推廣(SEM,SEO);軟件安裝與調(diào)試;服務(wù)器或網(wǎng)絡(luò)推薦及配置;APP開發(fā)與維護(hù);網(wǎng)站開發(fā)修改及維護(hù); 各財(cái)務(wù)軟件安裝調(diào)試及注冊服務(wù)(金蝶,用友,管家婆,速達(dá),星宇等);同時(shí)也有客戶管理系統(tǒng),人力資源,超市POS,醫(yī)藥管理等;

立即查看 了解詳情