ID:               24977
 Updated by:       [EMAIL PROTECTED]
 Reported By:      jmat at shutdown dot net
-Status:           Open
+Status:           Feedback
 Bug Type:         MySQL related
 Operating System: Linux 2.4.18/Redhat 7.2
 PHP Version:      4CVS-2003-08-07 (stable)
 New Comment:

Try the following patch and see if it fixes the problem (be sure to
remove your workaround before you start testing it).
http://bb.prohost.org/my.txt


Previous Comments:
------------------------------------------------------------------------

[2003-08-07 16:48:59] jmat at shutdown dot net

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. :)

------------------------------------------------------------------------

[2003-08-07 16:39:15] jmat at shutdown dot net

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.  :)

------------------------------------------------------------------------

[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

Reply via email to