打開WordPress出現(xiàn)“error establishing a database connection”錯(cuò)誤如何解決
[重要通告]如您遇疑難雜癥,本站支持知識(shí)付費(fèi)業(yè)務(wù),掃右邊二維碼加博主微信,可節(jié)省您寶貴時(shí)間哦!
今天打開一個(gè)客戶的服務(wù)器,系統(tǒng)linux的,然后就出現(xiàn)了“error establishing a database connection”這其實(shí)就是連接數(shù)據(jù)庫錯(cuò)誤,可是找了很久也沒發(fā)現(xiàn)啥,一切都是正常的很是郁悶,最后處理的方式多重啟了幾次系統(tǒng)就好了,一直也沒想出啥問題;
最簡單的方法就是重啟服務(wù)器或者用service mysqld restart命令(MySQL數(shù)據(jù)庫)或者systemctl restart mariadb.service命令(MariaDB數(shù)據(jù)庫)可以暫時(shí)解決問題,過一段時(shí)間還會(huì)出現(xiàn)。
再次分析原因可能是Apache2占用內(nèi)存過高,MySQL/MariaDB運(yùn)行一段時(shí)間后會(huì)自動(dòng)退出所致,解決方法:
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)容:
|
說明:
|
注:在Apache2.3.13以前的版本MaxRequestWorkers被稱為MaxClients。此外,設(shè)置ServerLimit參數(shù)最好與MaxRequestWorkers的值保持一致。
恩,貌似還沒有解決我的問題,那么,我們使用WordPress提供的調(diào)試機(jī)制來看看到底是哪里有問題吧!
首先應(yīng)該做的是確保在站點(diǎn)的前端和站點(diǎn)的后端(wp-admin)上都得到相同的錯(cuò)誤。如果錯(cuò)誤消息在兩個(gè)頁面上都相同“建立數(shù)據(jù)庫連接時(shí)出錯(cuò)”。我們可以按照下面的步驟執(zhí)行。
在wp-config.php文件中添加以下代碼:
|
保存以后,我們執(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í)不要輸錯(cuò)。另外當(dāng)我們的網(wǎng)站流量過大時(shí),也會(huì)出現(xiàn)數(shù)據(jù)庫連接錯(cuò)誤。
如果同一個(gè)服務(wù)器上有多個(gè)服務(wù),可以訪問其他服務(wù)看看是否正常,判斷是不是數(shù)據(jù)庫服務(wù)器導(dǎo)致的。
網(wǎng)上的方法,第一種:看你的VPS控制面板(一般寶塔或者wdcp)能不能連上,如果你的控制面板連不上的話那就說明是你的vps中的mysql服務(wù)沒有啟動(dòng),所以這個(gè)時(shí)候你需要啟動(dòng)你的mysql服務(wù)即可。
啟動(dòng)服務(wù)如下service mysqld startservice?pureftpd startservice wdapache startservice httpd startservice nginxd start
第二種:磁盤空間可能滿了
是的,你的vps磁盤空間滿了,也會(huì)導(dǎo)致mysql服務(wù)啟動(dòng)不起來,這個(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)站就會(huì)恢復(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 -ADatabase 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ù)自動(dòng)修復(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)無敷衍,落筆求簡潔。 以所舍,求所獲;有所依,方所成!