打开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号又微信号)右上方扫一扫可加博主微信
所写所说,是心之所感,思之所悟,行之所得;文当无敷衍,落笔求简洁。 以所舍,求所获;有所依,方所成!