mysql_pconnect():发送5个字节失败,errno = 32 Broken pipe

时间:2009-12-12 18:37:38

标签: php mysql mysql-connect mysql-pconnect

我多年来一直在使用相同的数据库抽象库。但是今天它开始在我的日志中写下这些Notice(8)消息。

应用程序正常运行,但每次脚本连接到数据库时都会记录相同的通知。

我无法想象会发生什么变化。这发生在我当地的开发机器上。

OS X 10.6.2
PHP 5.3.0 (cli) 
mysql Ver 14.12 Distrib 5.0.87
mysqlnd 5.0.5-dev - 081106 - $Revision: 1.3.2.27 $

5 个答案:

答案 0 :(得分:12)

如果有人在努力解决这个问题,请点击此处修复:

尝试在mysql wait_timeout配置文件中更改/设置my.cnf

wait_timeout=3600

此配置文件位于/etc/mysql/my.cnf(Ubuntu / Debian)和/usr/local/mysql/my.cnf(OSX)。

重启mysql服务器,它应该可以工作。

答案 1 :(得分:3)

到目前为止,我找到的唯一解决方案是改变

window.onload = function () {
   @onload_js
}

对此并不满意,但同时也适用。 我使用非常旧的PC进行个人项目,因此我猜测问题可能与资源不足有关。

答案 2 :(得分:2)

我使用PHP 5.6.20,PDO(仅抛出异常),MySQL 5.6.28具有持久连接,一切都是utf8mb4。我的整个堆栈都设置为utf-8(dsn字符串设置,连接,数据库服务器数据库,表,列,Apache 2.4.12,PHP,所有网页,CSS ......你的名字)。

我间歇性地收到以下错误消息,这很神秘且烦人。

注意:PDO :: __ construct():发送5个字节失败,errno = 32文件/ foo / bar / baz

中的管道损坏

假设持久连接是一个非交互式,那么MySQL 5.6手册(5.1.4服务器系统变量)说明服务器系统变量{{1} }。

  

服务器等待活动的秒数   关闭之前的非交互式连接。

默认值:28800秒

wait_timeout

最大值:31536000秒

(28000 sec / 1) * (1 hour / 3600 sec) = 8 hours

因此,请检查((31536000 sec / 1) * (1 hr / 3600 sec) * (1 day / 24 hrs) = 365 days 中的wait_timeout,然后确定是否需要持久连接。 此外,您还必须投入使您的应用程序更加强大,以解决已被拆除的持久连接。显然,您不希望您的客户在第二天回来(已经回家过夜了,然后说'#34;到底是什么?!"

答案 3 :(得分:0)

可能是因为您的数据包含'utf-8'字符。我有类似的问题是由它引起的。

  

异常:mysql_query():发送1462592字节失败,错误为errno = 32 Broken pipe

我用过

mysql -u username -p database < dump_file # this is bad 

导入sql文件包含很多UTF8字符(泰语),但我没有为[mysql]设置default-character-set = utf8。因此数据库中错误的编码数据导致了这个问题。

答案 4 :(得分:-1)

只需删除mysqlnd驱动程序并使用mysqlimysqlnd更现代,但稳定性呢? 下一个命令可以解决您的问题

  

apt-get remove php5-mysqlnd

     

apt-get install php5-pdo-mysql