php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #10380 dba_*open with mode 'c' problem
Submitted: 2001-04-18 10:02 UTC Modified: 2002-01-12 02:26 UTC
From: mrobinso@php.net Assigned:
Status: Closed Package: DBM/DBA related
PHP Version: 4.0 Latest CVS (18/04/2001) OS: RedHat 7.0
Private report: No CVE-ID: None
 [2001-04-18 10:02 UTC] mrobinso@php.net
db3 support compiled in without problems, all functions
available and working.

apache-1.3.19, php snapshot from today.
db3 3.1.14-6, devel, utils, stock rpm install in rhl-7.0.

database directory is "drwxrwxrwt";

using dba_open or dba_popen, with mode 'c', if the
database doesn't exist, it is created and the function
performs as expected. If the database already exists,
the function should open the database for read/write
access. Instead, it throws:

driver initialization failed...

despite having just created the database itself.

For example:

$dbpath = "/usr/local/db3data/test/testdb3.db3";
$dbmode = "c";
$dbhandler = "db3";

$dbh = dba_popen($dbpath,$dbmode,$dbhandler);
$mykey = "mykey";
$myval = "Hello World";
if (!dba_exists($mykey,$dbh)) {
   echo "Key doesn't exist, adding it.<br>\n";
   dba_insert ($mykey, $myval, $dbh);               
} 
else {
   $storedval = dba_fetch($mykey, $dbh);        
   echo $storedval;
}

This snippet will work as expected if the database
doesn't exist. If it does, the error occurs, where
according to the docs it should just open the database
for read write access.

If the database exists and I change the mode to 'w',
expected behaviour occurs.


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2002-01-12 02:26 UTC] swm@php.net
Fixed in current CVS
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Wed Dec 04 21:01:29 2024 UTC