Reputation: 3943
So this morning I try to connect to SQLite database using PDO and also create a table. Firstly, I create a file called db.sqlite, and then create my connection and execute a create table
query, but the execute
pdo function always returns 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();
So what I did next is to remove the db.sqlite
from the connection and replace with :memory:
to create a db in memory, which works perfectly.
$pdo = new PDO("sqlite::memory:");
So I am confused, why can I use :memory:
and not the file, and how do I fix it?
Below is the error I get when I enable exception:
Upvotes: 3
Views: 3510
Reputation: 3943
The reason why it will not work is because the file database.sqlite
was within the /var/www/
directory, this gives it an automatic RW-RW-R--
permission, meaning that you will not be able to change the structure of the file, I did two things and it worked, firstly I changed the owner of the www directory.
chown -R <your username>:<your username> www/*
Then changed the permission of the project directory
chmod -R 777 <project>/*
and it worked for me
Upvotes: 1