PDO:无法在内存中创建SQLite数据库

时间:2010-03-11 14:09:30

标签: php sqlite pdo in-memory-database

尝试了解PDO并了解this tutorial。它有以下代码片段:

<?php

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

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

当我运行此命令时,我收到以下异常消息:

  

SQLSTATE [HY000] [14]无法打开数据库文件

这是什么意思?我怎样才能让它发挥作用?我能够连接到MySQL数据库和常规SQLite数据库文件。所以我知道至少有些东西在起作用......

我在Windows 7 64位上使用Apache 2.2.11和PHP 5.3.0(最新WampServer安装)。 phpinfo()报告我启用了SQLite Library 3.6.15的pdo_sqlite。

2 个答案:

答案 0 :(得分:47)

你必须写

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

缺少尾随:


  

PDO_SQLITE数据源名称(DSN)由以下元素组成:

     

DSN前缀为 sqlite:

     
      
  • 要访问磁盘上的数据库,请附加DSN前缀的绝对路径。

  •   
  • 要在内存中创建数据库,请将:memory:附加到DSN前缀。

  •   

Documentation

答案 1 :(得分:2)

不确定@ win权限,但在* nix上,SQLite需要对临时文件的dir限制数据库文件具有写权限。