CakePHP database connection "Sqlite" is missing, or could not be created


Just downloaded 2.1.1 stable to read a SQLite database.

There’s a nice diagnostics page to welcome any developer, except it complained about my database config; e.g.,

Database connection “Sqlite” is missing, or could not be created.

I thought it might’ve been a missing driver, or something, so I looked in lib/Cake/Model/Datasource/Database/; e.g.,

-rw-rw-r-- 1 waynekhan waynekhan 20K 2012-03-25 18:30 Mysql.php
-rw-rw-r-- 1 waynekhan waynekhan 25K 2012-03-25 18:30 Postgres.php
-rw-rw-r-- 1 waynekhan waynekhan 16K 2012-03-25 18:30 Sqlite.php
-rw-rw-r-- 1 waynekhan waynekhan 23K 2012-03-25 18:30 Sqlserver.php

So it turns out additional stuff is required for PHP to talk to SQLite. If you’re on Oneiric Ocelot (11.10), you’re in luck. The package name is php5-sqlite; e.g.,

sudo apt-get install php5-sqlite -y
sudo /etc/init.d/apache2 restart

Once that is done, use :memory: for the database param to make sure that the server setup is OK.

Lastly, adjust the filename of the database file; e.g. mine is app/webroot/trac.db, so I simply say trac.db. Once this is done, you may encounter another error:

Database connection “SQLSTATE[HY000] [14] unable to open database file” is missing, or could not be created.

This is due to file permissions, so check if the www-data group owns trac.db; e.g.,

drwxr-xr-x 6 waynekhan www-data 4.0K 2012-04-25 10:46 .
-rw-rw---- 1 waynekhan www-data 12M 2012-04-24 18:45 trac.db