2015-12-21 122 views
2

所以今天早上我嘗試使用PDO連接到SQLite數據庫並創建一個表。首先,我創建一個名爲db.sqlite的文件,然後創建我的連接並執行create table查詢,但execute pdo函數始終返回falsePHP PDO連接到SQLITE db

$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:,而不是文件,如何解決呢?

下面是我的錯誤,當我啓用異常: enter image description here

+1

'要在磁盤訪問數據庫的絕對路徑追加到DSN prefix.'見 - **絕對**。 –

+0

@u_mulder,絕對路徑?就像從根目錄直接看,這似乎不太好,考慮到我的應用程序可能會分發,並且人們將有不同的路徑,他們將存儲應用程序 –

+0

然後寫信給開發人員。 –

回答

0

爲什麼它不會工作,是因爲該文件database.sqlite/var/www/目錄內的原因,這給它一個自動RW-RW-R--許可,這意味着你將無法更改文件的結構,我做了兩件事情,它的工作,首先我改變了www目錄的所有者。

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

然後改變了項目目錄

chmod -R 777 <project>/* 

的許可,它爲我工作