I've been using the same DB abstraction library for years. But today it started writing these Notice (8) messages in my log.
The application is working correctly but every time a script connects to the DB the same notice is logged.
I cannot think what might have changed. This is happening on my local dev machine.
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 $
It may be because your data contains 'utf-8' characters. I had the similar issue is caused by it.
I used
to import the sql file contains lot of UTF8 characters (Thai language), but I didn't set default-character-set=utf8 for [mysql]. So the wrong coded data in the database caused that issue.
just remove
mysqlnd
driver and usemysqli
Yesmysqlnd
more modern, but what about stability? next commands fix your problemIf someone is struggling with this issue, here is the fix:
Try changing/setting up
wait_timeout
in your mysqlmy.cnf
config file:This config file is located in the
/etc/mysql/my.cnf
(Ubuntu/Debian) and/usr/local/mysql/my.cnf
(OSX).Restart mysql server and it should work.
Only solution I've found so far is, changing
Not so happy with this, but works in the meantime. I'm using a very old PC for personal project, so I'm guessing the problem could have to do with lack of resources.
I am using PHP 5.6.20, PDO (throwing exceptions only), and MySQL 5.6.28 with persistent connections and EVERYTHING is utf8mb4. My entire stack is set up for utf-8 (dsn string settings, connections, database server databases, tables, columns, Apache 2.4.12, PHP, all webpages, CSS ... you name it).
I get the following error message intermittently and it is mystifying and annoying.
Notice: PDO::__construct(): send of 5 bytes failed with errno=32 Broken pipe in file /foo/bar/baz
Assuming a persistent connection is a noninteractive one, the MySQL 5.6 manual (5.1.4 Server System Variables) says the following about the server system variable
wait_timeout
.Default: 28800 sec
(28000 sec / 1) * (1 hour / 3600 sec) = 8 hours
Max: 31536000 sec
Therefore, check
wait_timeout
in yourmy.cnf
and decide if persistent connections are what you need. Also, you'll have to invest in making your application more robust to account for a persistent connection that has been torn down. Clearly, you do not want your client to come back the next day (having gone home for the night) and say "What the heck?!"