7

多年来,我一直在使用同一个数据库抽象库。但是今天它开始在我的日志中写入这些通知 (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 $
4

5 回答 5

13

如果有人在这个问题上苦苦挣扎,这里是修复:

wait_timeout尝试在您的 mysqlmy.cnf配置文件中更改/设置:

wait_timeout=3600

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

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

于 2014-08-19T15:00:18.207 回答
3

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

// From
PDO::ATTR_PERSISTENT => true
// To
PDO::ATTR_PERSISTENT => false

对此不太满意,但同时工作。我正在使用一台非常旧的 PC 进行个人项目,所以我猜这个问题可能与缺乏资源有关。

于 2015-09-02T14:35:59.820 回答
2

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

我间歇性地收到以下错误消息,它既神秘又烦人。

注意:PDO::__construct(): 发送 5 个字节失败,文件 /foo/bar/baz 中的 errno=32 Broken pipe

假设持久连接是非交互式连接,MySQL 5.6 手册(5.1.4 服务器系统变量)对服务器系统变量有以下说明wait_timeout

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

默认值:28800 秒

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

最大:31536000 秒

((31536000 sec / 1) * (1 hr / 3600 sec) * (1 day / 24 hrs) = 365 days

因此,检查wait_timeoutmy.cnf确定是否需要持久连接。此外,您必须投资于使您的应用程序更加健壮,以解决已被拆除的持久连接。显然,您不希望您的客户第二天回来(已经回家过夜)并说“这到底是什么?!”

于 2016-05-01T11:24:27.710 回答
0

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

异常:mysql_query():发送 1462592 字节失败,错误号=32 管道损坏

我用了

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

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

于 2014-02-24T07:48:56.713 回答
-1

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

apt-get 删除 php5-mysqlnd

apt-get 安装 php5-pdo-mysql

于 2015-06-25T18:10:25.930 回答