2010-03-11 7 views
20

Cercando di imparare un po 'di PDO e sta passando attraverso this tutorial. Essa ha il seguente frammento di codice:PDO: impossibile creare il database SQLite nella memoria

<?php 

try 
{ 
    $db = new PDO('sqlite::memory'); 
    echo "SQLite created in memory."; 

} 
catch(PDOException $e) 
{ 
    echo $e->getMessage(); 
} 

Quando eseguo questo ottengo il seguente messaggio di eccezione:

SQLSTATE [HY000] [14] in grado di aprire file di database

Cosa significa? Come posso farlo funzionare? Sono in grado di connettermi a un database MySQL e anche a un normale file di database SQLite. Quindi so che qualcosa funziona ...

Sono su Windows 7 64-bit con Apache 2.2.11 e PHP 5.3.0 (ultima installazione WampServer). phpinfo() segnala che ho pdo_sqlite con SQLite Library 3.6.15 abilitato.

risposta

41

dovete scrivere

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

il trailing : manca.


Il PDO_SQLITE Data Source Name (DSN) è composto dai seguenti elementi:

Il prefisso DSN è SQLite:.

  • Per accedere a un database su disco, aggiungere il percorso assoluto al prefisso DSN.

  • Per creare un database in memoria, aggiungere : memoria: al prefisso DSN.

Documentation

+0

Non credibile ... haha. Grazie: D – Svish

2

Non sicuro @ win autorizzazioni, ma su * nix, SQLite ha bisogno di permessi di scrittura per la directory confinare i file di database per i file temporanei.

+0

anche bene sapere! – Svish