Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I connect CakePHP to a SQLite database?

Tags:

sqlite

cakephp

I have a rather basic problem: I can't seem to connect CakePHP to my SQLite database. Surprisingly, I didn't find lots of information about it on the internet, though I may be looking up the wrong keywords. Nevertheless, this is my connection code:

var $default = array(
        'driver' => 'sqlite',
        'connect' =>'sqlite_popen',
        'persistent' => false,
        'host' => 'localhost',
        'port' => '',
        'login' => '',
        'password' => '',
        'database' => '/home/MY_USER_NAME/public_html/my_database.sqlite',
        'schema' => '',
        'prefix' => '',
        'encoding' => ''
);

Still, Cake only says "Cake is NOT able to connect to the database". Also, I don't know where to see the "real" logs (i.e., the error returned from the SQLite "driver"). So, I hit a dead-end. What should I do?

Thanks in advance.

like image 587
Rafael Almeida Avatar asked Jun 20 '09 16:06

Rafael Almeida


4 Answers

As of CakePHP 2.0, Sqlite 3 is supported out of the box.

Be sure that sqlite is enabled in your PHP configuration:

phpinfo();

Inside app/Config/databases.php you can define Sqlite database like this:

public $default = array(
        'datasource' => 'Database/Sqlite',
        'persistent' => false,
        'database' => 'my_database_name',
        'prefix' => '',
        'encoding' => 'utf8',
);

Now check your app/webroot/my_database_name.sqlite file.

like image 95
trante Avatar answered Sep 24 '22 07:09

trante


SQLite3 is not officially supported yet by CakePHP... probably because the file attached to this bug/enhancement works.

https://trac.cakephp.org/ticket/3003

Grab the latest version of the file, update it with any newer patches, upload it to your cake/libs/model/datasources/dbo directory and configure it in your database.php file.

I am using a file called dbo_sqlite3.php

My configuration file uses this for the driver setting:

  'driver' => 'sqlite3',
like image 43
gidmanma Avatar answered Sep 25 '22 07:09

gidmanma


How to CakePHP with SQLite3:

Requirments:

  • CakePHP version 1.3
  • Datasources plugin

Steps:

Unpack the Datasources plugin in place.

Edit dbo_sqlite3.php and add:

App::import('Datasource','DboSource');

...just before the 'class' definition.

Use the following configuration in your database.php file:

var $default = array(
    'datasource' => 'Datasources.DboSqlite3',
    'login' => '',
    'password' => '',
    'database' => '/full/path/to/db.sqlite');

Done.

like image 27
anonymous Avatar answered Sep 25 '22 07:09

anonymous


Are you trying to connect to a SQLite 3 database? CakePHP doesn't support them yet.

Other than that, you might want to try adding the leading / in your path. Seems like you're trying to do an absolute path but without the leading slash it's not going to do what you think it's going to do.

like image 33
Paolo Bergantino Avatar answered Sep 23 '22 07:09

Paolo Bergantino