ID: 24977 User updated by: jmat at shutdown dot net Reported By: jmat at shutdown dot net Status: Open Bug Type: MySQL related Operating System: Linux 2.4.18/Redhat 7.2 PHP Version: 4CVS-2003-08-07 (stable) New Comment:
It appears that restarting the webserver will 'fix' the problem, for at least a few hours. While the server in question is working fine now, a second server (semi-production) just started throwing "No Database Selected" about 5 minutes ago -- it's been up for 4 hours. It's running the same versions (except Redhat 8) of Apache/PHP. Restarting it fixed the problem on it, as well. For now, I'll just cron a server restart every 3 hours. :) Previous Comments: ------------------------------------------------------------------------ [2003-08-07 16:29:52] jmat at shutdown dot net Description: ------------ When trying to select a database, about every 5 times, the database will not get selected, and future queries will fail. To make matters worse, mysql_select_db is returning 'true' even when the database isn't selected. This code has worked since PHP 4.0, and has never changed; this problem just started appearing on the latest CVS (had to upgrade to fix ErrorDocument under Apache/2). Attached code is pieced together from my database abstraction library; it produces the same problems as my full code does. I have verified there are no problems with the database server. When I push this code back on to 4.3.2, I can't make it fail. PHP Version 4.3.3RC3-dev Apache 2.0.47 MySQL Support Client API version 4.0.14 MYSQL_MODULE_TYPE external for full phpinfo: http://shutdown.net/~web/index.php Reproduce code: --------------- /* DEFINE's for server, server port, username, passwd */ define("SITE_DB","test"); $db_handle = mysql_pconnect(DB_SERVER.":".DB_PORT,DB_USER,DB_PASS)) $RETRY = 0; while (!mysql_select_db(SITE_DB,$db_handle)) { logger("ERROR: Cannot select ".SITE_DB." database! ATTEMPT $RETRY".mysql_error(),0); sleep(1); if ($RETRY++ > 5) { trigger_error("Couldn't select ".SITE_DB." on ".DB_SERVER,2); return false; } } $result = mysql_query("select count(*) from user"); if (mysql_error()) die("FAIL: ".mysql_error()); $value = mysql_result($result,0); echo $value; Expected result: ---------------- 5 Actual result: -------------- about 1/3 the time: "FAIL: No Database Selected" the other 2/3: "5" ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=24977&edit=1