在内存中创建 SQLite 数据库

Posted

技术标签:

【中文标题】在内存中创建 SQLite 数据库【英文标题】:Create SQLite database in memory 【发布时间】:2011-01-26 09:36:56 【问题描述】:

正在尝试了解 PDO 并正在经历 this tutorial。它有以下sn-p的代码:

<?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() 报告说我启用了 pdo_sqlite 并启用了 SQLite Library 3.6.15。

【问题讨论】:

【参考方案1】:

你必须写

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

缺少尾随 :


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

DSN 前缀是 sqlite:

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

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

Documentation

【讨论】:

难以置信...哈哈。谢谢:D 每次执行脚本时都会重新创建这个数据库吗?或者它将存储在内存中?【参考方案2】:

不确定@win 权限,但在 *nix 上,SQLite 需要对限制数据库文件的目录的写入权限以用于临时文件。

【讨论】:

以上是关于在内存中创建 SQLite 数据库的主要内容,如果未能解决你的问题,请参考以下文章

在 JDBC Sqlite 中创建数据库

Ionic - 在 android 的不同目录中创建 SQLite 数据库

如何在 phonegap xcode 中创建 sqlite 数据库?

sqlite-在数据库中创建默认时间

如何在android中创建SQLite数据库

在 Android 的 SQLite 中创建数据库的问题