Create SQLite database in memory

10,798

Solution 1

You have to write

$db = new PDO('sqlite::memory:');

the trailing : is missing.


The PDO_SQLITE Data Source Name (DSN) is composed of the following elements:

The DSN prefix is sqlite:.

  • To access a database on disk, append the absolute path to the DSN prefix.

  • To create a database in memory, append :memory: to the DSN prefix.

Documentation

Solution 2

Not sure @ win permissions, but on *nix, SQLite needs write permision to the dir confining database files for temp files.

Share:
10,798
Lemon
Author by

Lemon

Software Developer, Geek, HSP, SDA, ..., open, honest, careful, perfectionist, ... Currently into indoor rowing and rock climbing, just to mention something non-computer-related... Not the best at bragging about myself... so... not sure what more to write... 🤔

Updated on July 02, 2022

Comments

  • Lemon
    Lemon almost 2 years

    Trying to learn a bit about PDO and is going through this tutorial. It has the following snippet of code:

    <?php
    
      try
      {
        $db = new PDO('sqlite::memory');
        echo "SQLite created in memory.";
      }
      catch(PDOException $e)
      {
        echo $e->getMessage();
      }
    

    When I run this I get the following exception message:

    SQLSTATE[HY000] [14] unable to open database file

    What does that mean? How can I get it to work? I am able to connect to a MySQL database and also a regular SQLite database file. So I know at least something is working...

    I'm on Windows 7 64-bit with Apache 2.2.11 and PHP 5.3.0 (latest WampServer install). phpinfo() reports that I have pdo_sqlite with SQLite Library 3.6.15 enabled.