Doc #68393 [Ver->Csd]: PDO Does Not Produce Exception For 'sqlite:' With Missing Filepath

From: Date: Thu, 22 Oct 2020 13:10:11 +0000
Subject: Doc #68393 [Ver->Csd]: PDO Does Not Produce Exception For 'sqlite:' With Missing Filepath
References: 1  Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-18022@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=68393&edit=1

 ID:                 68393
 Updated by:         phpdocbot@php.net
 Reported by:        kyra at existing dot me
 Summary:            PDO Does Not Produce Exception For 'sqlite:' With
                     Missing Filepath
-Status:             Verified
+Status:             Closed
 Type:               Documentation Problem
 Package:            PDO SQLite
 Operating System:   Linux
 PHP Version:        5.6.2
 Block user comment: N
 Private report:     N

 New Comment:

Automatic comment on behalf of cmb
Revision: http://git.php.net/?p=doc/en.git;a=commit;h=4d037a4cd06d326fa18bf46d6f7488566e60e9c7
Log: Fix #68393: PDO Does Not Produce Exception For 'sqlite:' With Missing Filepath


Previous Comments:
------------------------------------------------------------------------
[2015-06-22 15:05:15] cmb@php.net

The behavioral change has been introduced as fix for bug
#52010[1]. How temporary databases are handled by Sqlite3 is
#detailed in [2].

[1] <http://svn.php.net/viewvc/php/php-src/trunk/ext/pdo_sqlite/sqlite_driver.c?r1=300612&r2=300611&pathrev=300612>
[2] <https://www.sqlite.org/inmemorydb.html#temp_db>

------------------------------------------------------------------------
[2015-06-22 12:19:36] mbeccati@php.net

Switching to documentation problem. Maybe it would be worth to add a note?

------------------------------------------------------------------------
[2014-11-10 22:52:14] kyra at existing dot me

Is this temp database being created in /tmp or in the current directory?

Also, isn't this basically the same thing as using :memory to create a temp db, but on disk? I
would have thought there would be a :disk option instead of assuming the user wanted to create a
temp db on disk, and had not made a coding error.

Is there, or should there be a note about this behavior in the PHP docs? I know I was stumped by my
try/catch not working as expected to warn me.

------------------------------------------------------------------------
[2014-11-10 22:38:01] salathe@php.net

From SQLite's point of view, this looks to be okay.

Here's a snippet from the SQLite docs[1], in the "Opening
A New Database Connection" section[2]:

  If the filename is an empty string, then a private,
  temporary on-disk database will be created. This 
  private database will be automatically deleted as 
  soon as the database connection is closed.

[1] http://www.sqlite.org/c3ref/intro.html
[2] http://www.sqlite.org/c3ref/open.html

------------------------------------------------------------------------
[2014-11-10 21:59:09] kyra at existing dot me

Description:
------------
I was passing the SQLite filepath portion of the DSN as a variable and happened to pass an empty
string, but PDO did not raise an Exception, and gave no indication the connection had failed.

If you check out http://3v4l.org/o1k3M you can see at some point
after PHP 5.2.14 that this behavior began.

Test script:
---------------
$db = new PDO('sqlite:');

Expected result:
----------------
Fatal error: Uncaught exception 'PDOException' with message...



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



--
Edit this bug report at https://bugs.php.net/bug.php?id=68393&edit=1


Thread (3 messages)

« previous php.doc.bugs (#18022) next »