ID: 27911 User updated by: csaba at alum dot mit dot edu Reported By: csaba at alum dot mit dot edu -Status: Bogus +Status: Open Bug Type: SQLite related Operating System: Win 2K PHP Version: 5.0.0RC1 New Comment:
Thanks for your comments (and sorry about the name typo). The complete path name has done the trick on my system (and NOT the close database). I would suppose that what is happening is that in the sqlite_open PHP is looking in the appropriate directory but the ATTACH is passed to sqlite which doesn't know what search path PHP is using. I tested this by inserting the full path into the ATTACH DATABASE line, doing an insert into the ATTACHED db4.Tab1, and then doing a query on the original $db1 database connection (without a close of $db1). But IF it is the case that a sqlite_close is not necessary, then using ':memory:' in place of 'Delme.db1' on the first line and on the ATTACH DATABASE line should allow the database in memory to be seen. However, in the subsequent sqlite_array_query I still get: no such table: db4.Tab1 If it was the case that the database must be closed per your second comments, then the behaviour with ':memory:' is understandable (since it's gone). Csaba Gabor PS. I just wanted to ensure this got reviewed (since it seems to me like the case with ':memory:' is not working if your first comments, per my testing, are correct), so apologies if it was inappropriate to change status to Open (and in that case please let me know what my action should have been). Previous Comments: ------------------------------------------------------------------------ [2004-04-08 04:40:17] [EMAIL PROTECTED] bah, that's what happens when you get interrupted. OK, you can't ATTACH a database that you already have opened elsewhere (like inside PHP); close it first. ------------------------------------------------------------------------ [2004-04-08 04:37:42] [EMAIL PROTECTED] Please try using the full path to the file in your ATTACH SQL. PS: it's SQLite, not mysqlite ------------------------------------------------------------------------ [2004-04-07 17:29:27] csaba at alum dot mit dot edu Description: ------------ I've been using mysqlite regularly for the past two weeks, no complaints. However, I cannot seem to do a SQLite ATTACH DATABASE at all. Variations I have tried: sqlite_popen in place of sqlite_open (especially when $db1 was ':memory:', closing $db1 before attaching, using ':memory:' in place of either 'Delme1.db1' or 'Delme2.db1'. I have also tried this with and without open_basedir set to "." in my Apache 2.0.48 Csaba Gabor Reproduce code: --------------- $db1 = sqlite_open('Delme.db1', 0666, $sqliteerror); sqlite_query ($db1, 'DROP TABLE Tab1;'); sqlite_query($db1, "CREATE TABLE Tab1 (Id INTEGER PRIMARY KEY, Fld1 VARCHAR(16));"); sqlite_query ($db1, "INSERT INTO Tab1 VALUES (NULL, 'foo1');"); print "<br>Rows: in DB1: " . sqlite_fetch_single (sqlite_query($db1, "SELECT COUNT(*) FROM Tab1;")); $db2 = sqlite_open('Delme.db2', 0666, $sqliteerror); sqlite_query ($db2, 'DROP TABLE Tab2;'); sqlite_query($db2, "CREATE TABLE Tab2 (Id2 INTEGER PRIMARY KEY, Fld2 VARCHAR(8));"); sqlite_query ($db2, "INSERT INTO Tab2 VALUES (NULL, 'bar2');"); sqlite_query ($db2, "INSERT INTO Tab2 VALUES (NULL, 'bar3');"); print "<br>Rows in DB2: " . sqlite_fetch_single (sqlite_query($db2, "SELECT COUNT(*) FROM Tab2;")); @sqlite_query ($db2, "DETACH DATABASE db;"); sqlite_query ($db2, "ATTACH DATABASE 'Delme.db1' AS db4;"); $aRes = sqlite_array_query ($db2, "SELECT * FROM db4.Tab1;"); Expected result: ---------------- I expect that I can use the attached database as described at SQLite's homepage. Actual result: -------------- Instead, in pretty much all the variants that I tried, I get the following error on the ATTACH DATABASE line: Warning: sqlite_query() [function.sqlite-query]: cannot attach empty database: db4 in MyPHPFilesDir/myPHPCode.php on line 15 The following (last) line also gets a complaint but by then the damage has already been done. At some point, when I was testing using db3 (in place of where db4 now is), I got the complaint that the database (db3) was already in use. I don't know how that complaint started originating, nor could I get rid of it. Going to db4 got me back to the usual complaint I indicated above. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=27911&edit=1