最新消息:ww12345678 的部落格重装上线,希望大家继续支持。

也谈 WordPress 建立数据库连接时出错

WordPress William 1399浏览 0评论

近2个多月以来,wordpress 博客一直被“建立数据库连接时出错”所困扰,几乎每天早上博客都会显示“建立数据库连接时出错”而无法登录,需要重启 apache 服务或者服务器临时解决该问题。在Google上以“建立数据库连接时出错”为关键字搜索后,能够找到很多解决方案,大体归纳后有以下几种方案:

1.修复wp_options表

使用phpmyadmin到后台去直接修复这个表;
也可以在wp-config.php中增加一句代码:define(‘WP_ALLOW_REPAIR’, true),然后直接访问后台http://xxxxx/wp-admin/maint/repair.php,按照wordpress的修复步骤操作即可。

2.重新设置wp_config文件中关于密码的设置

方法就是进入网站根目录下,在wp_config这个文件中找到下面这段,将其中的数据库密码这段设置成最新的密码即可。

// ** MySQL 设置 – 具体信息来自您正在使用的主机 ** /
//** WordPress 数据库的名称 */
define(‘DB_NAME’, ‘lumncn_lm’);
/** MySQL 数据库用户名 */
define(‘DB_USER’, ‘lumncn_lm’);
/** MySQL 数据库密码 */
define(‘DB_PASSWORD’, ‘123456’);
/** MySQL 主机 */
define(‘DB_HOST’, ‘localhost’);
/** 创建数据表时默认的文字编码 */
define(‘DB_CHARSET’, ‘utf8’);
/** 数据库整理类型。如不确定请勿更改 */
define(‘DB_COLLATE’, ”);

但本人尝试了上述几种方法,均无法将问题根除。经过仔细分析,发现:wordpress出错后,使用MySQL登录数据库,通常报“2003 Can’t connect to MySQL server on ‘localhost’ (10048)” 的错误提示,使用Google更换关键词搜索终于彻底解决 wordpress “建立数据库连接时出错” 的错误。以下是错误原因和解决方案:

解决Can’t connect to MySQL server on ‘localhost’ (10048)
一般见于使用mysql的windows 2003服务器.

c:>netstat -ano 可查看到 本机有不少端口连接到 mysql的 3308,状态都是LAST_ACK,所以导致刷新会出现 不能连接数据库的报错。
协议 本地地址 外部地址 状态 PID
TCP 127.0.0.1:4994 127.0.0.1:3308 LAST_ACK 1400
TCP 127.0.0.1:4996 127.0.0.1:3308 LAST_ACK 1400
TCP 127.0.0.1:4999 127.0.0.1:3308 LAST_ACK 1400

错误出现的原因:

应用程序需要快速释放和创建新连接, 但是由于 TIME_WAIT 中存在的连接超过默认值,导致较低吞吐量.
微软技术支持知识库中指出 :当您试图从大于 5000 的 TCP 端口连接时收到错误 http://support.microsoft.com/kb/q196271/
我从本地端口可以看到 127.0.0.1:4999 已经到了5000

解决方案:
和本错误密切相关的两个windows的注册表项:TcpTimedWaitDelay和MaxUserPort的值.

TcpTimedWaitDelay 确定 TCP/IP 可释放已关闭连接并重用其资源前, 必须经过的时间. 关闭和释放之间的此时间间隔通称

TIME_WAIT 状态或两倍最大段生命周期(2MSL)状态. 此时间期间, 重新打开到客户机和服务器的连接的成本少于建立新连接. 减

少此条目的值允许 TCP/IP 更快地释放已关闭的连接, 为新连接提供更多资源.

MaxUserPort 确定从系统请求任何可用用户端口时所用最大端口数,TCP/IP 可指定的最高端口号. 如果建立 TCP 连接最大端口连

接大于 5000, 本地计算机响应以下错误信息WSAENOBUFS (10055): 因为系统缺乏足够缓冲区或者因为队列已满而无法执行套接字

上操作, 从而导致应用程序的10048错误.

打开注册表编辑器regedit

TcpTimedWaitDelay 设置:
找到 HKEY_LOCAL_MACHINESYSTEMCurrentControlSet ServicesTCPIPParameters 注册表子键
并创建名为 TcpTimedWaitDelay 的新 REG_DWORD 值
设置此值为十进制 30, 十六进制为 0x0000001e
该值等待时间将是 30 秒。设置范围30-60秒
本项的默认值:0xF0(16进制), 等待时间设置为 240 秒

MaxUserPort 设置(增加最大值端口连接):
找到 HKEY_LOCAL_MACHINESYSTEMCurrentControlSet ServicesTCPIPParameters 注册表子键
并创建名为 MaxUserPort 的新 REG_DWORD 值
设置到 65535
该值等待时间将是前面所设置的 30 秒。本项的默认值:5000(十进制)
关闭注册表编辑器, 在方便的时刻重启Windows系统。

转载请注明:ww12345678 的部落格 | AX Helper » 也谈 WordPress 建立数据库连接时出错

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址