简体   繁体   中英

How do I connect CakePHP to a SQLite database?

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 (ie, the error returned from the SQLite "driver"). So, I hit a dead-end. What should I do?

Thanks in advance.

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.

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',

How to CakePHP with SQLite3:

Requirments:

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.

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.

For cakephp 3.6 it should be like this:

'default' => [
    'className' => 'Cake\Database\Connection',
    'driver' => 'Cake\Database\Driver\Sqlite',
    'persistent' => false,
    'host' => 'localhost',
    'port' => '',
    'login' => '',
    'password' => '',
    'database' => 'C:\Bitnami\wampstack-5.6.39-0\apache2\htdocs\cake36\cake36.sqlite',
    'schema' => 'test',
    'prefix' => '',
    'encoding' => ''
],

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM