|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2003-08-07 16:29 UTC] 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" PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Wed Oct 29 07:00:01 2025 UTC |
Yet some more info: I just had a 3rd server start throwing "No Database Selected". Instead of restarting it, I added a small piece of code into my abstract library for running queries. if (mysql_error() == "No Database Selected") { mysql_select_db(SITE_DB,$db_handle); $retry_query = true; } I basically have this enclosed in a while($retry_query == true) loop around my queries... When I do this, it works fine -- the database gets 'reselected', and it works. I'm going to leave this in there for now, although it's not very elegant, it will keep me up for now. :)