【问题标题】:PHP PDO connecting to SQLITE dbPHP PDO 连接到 SQLITE 数据库
【发布时间】: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')。无论如何 - 你明白了吗? ;-/

标签: php database sqlite pdo


【解决方案1】:

它不起作用的原因是因为文件database.sqlite在/var/www/目录中,这给了它一个自动的RW-RW-R--权限,这意味着你将无法更改文件的结构,我做了两件事并且成功了,首先我更改了 www 目录的所有者。

chown -R <your username>:<your username> www/*

然后更改了项目目录的权限

chmod -R 777 <project>/*

它对我有用

【讨论】:

    猜你喜欢
    • 2013-05-14
    • 2013-04-02
    • 2017-03-29
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    • 2013-08-03
    • 2021-02-25
    相关资源
    最近更新 更多