【发布时间】:2016-03-27 09:25:27
【问题描述】:
所以今天早上我尝试使用 PDO 连接到 SQLite 数据库并创建一个表。首先,我创建一个名为 db.sqlite 的文件,然后创建我的连接并执行create table 查询,但execute pdo 函数总是返回false。
$pdo = new PDO("sqlite:db.sqlite");
$STH = $pdo->prepare(
'CREATE TABLE "users" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,
"full_name" VARCHAR,
"description" TEXT,
"token" INTEGER);
');
$STH->execute();
所以我接下来要做的是从连接中删除db.sqlite 并替换为:memory: 以在内存中创建一个数据库,效果很好。
$pdo = new PDO("sqlite::memory:");
所以我很困惑,为什么我可以使用:memory:而不是文件,我该如何解决?
【问题讨论】:
-
To access a database on disk, append the absolute path to the DSN prefix.见 - 绝对。 -
@u_mulder,绝对路径?就像从根目录一样,这似乎不太好,考虑到我的应用程序可能已分发,并且人们将有不同的路径来存储应用程序
-
然后给开发者写一封信。
-
也许有用?
$dsn = "sqlite:" . __DIR__ .'/db.sqlite';。单独说明:我为home或我网站的顶级目录定义了一个常量,称为APP_HOME_ROOT。所有数据都可以在该根目录下的data目录中找到。所以我define('APP_DATA_ROOT,' APP_DATA_ROOT . '/data');。而且,是的 - 这也适用于 Windows。 -
哎呀-应该是:
define('APP_DATA_ROOT', APP_HOME_ROOT . '/data')。无论如何 - 你明白了吗? ;-/