7

私は何年も同じ DB 抽象化ライブラリを使用してきました。しかし、今日、ログにこれらの通知 (8) メッセージを書き始めました。

アプリケーションは正常に動作していますが、スクリプトが DB に接続するたびに同じ通知がログに記録されます。

何が変わったのか考えられません。これは、ローカルの開発マシンで発生しています。

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

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、すべての Web ページ、CSS ... 名前を付けます)。

次のエラー メッセージが断続的に表示され、不可解で迷惑です。

Notice: PDO::__construct(): 5 バイトの送信が errno=32 で失敗しました ファイル /foo/bar/baz の壊れたパイプ

永続的な接続非対話型の接続であると仮定すると、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_timeoutして判断してください。また、切断された永続的な接続を考慮して、アプリケーションをより堅牢にするために投資する必要があります。明らかに、クライアントが次の日に戻ってきて (その夜家に帰った後)、「一体何?!」と言ってほしくないのは明らかです。my.cnf

于 2016-05-01T11:24:27.710 に答える
0

データに「utf-8」文字が含まれている可能性があります。それが原因で同様の問題が発生しました。

例外: mysql_query(): 1462592 バイトの送信が errno=32 で失敗しました 壊れたパイプ

使った

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

sqlファイルをインポートするには、多くのUTF8文字(タイ語)が含まれていますが、[mysql]にdefault-character-set=utf8を設定していません。したがって、データベース内の間違ったコード化されたデータがその問題の原因でした.

于 2014-02-24T07:48:56.713 に答える