在 CakePHP 2.0 中使用 SQLite3

Posted

技术标签:

【中文标题】在 CakePHP 2.0 中使用 SQLite3【英文标题】:Using SQLite3 with CakePHP 2.0 【发布时间】:2011-11-07 10:42:28 【问题描述】:

我正在尝试使用 Cakephp 2.0 运行 SQLite3

在这些问题中,我看到在 CakePHP 1.3 中可以做到这一点: - Using Sqlite3 with CakePHP - How do I connect CakePHP to a SQLite database?

但是,这些解决方案对 CakePHP 2.0 无效。

我配置了“database.php”文件,并在 CakePHP 的起始页上成功了。它能够连接到数据库(但我不知道在哪里可以找到 .db3 数据库文件)。

我使用了以下代码:

public $default = array(
    'datasource' => 'Database/Sqlite',
    'persistent' => false,
    'host' => 'localhost',
    'login' => '',
    'password' => '',
    'database' => 'cake_blog_tutorial',
    'prefix' => '',
    //'encoding' => 'utf8',
);

我想知道:

    我的 cake_blog_tutorial.db3 文件应该保存在哪里 SQLite3 的数据源是否不同,例如“Database/Sqlite3”?

感谢您的帮助!

【问题讨论】:

通常位于 webroot 文件夹中...尝试在那里查找您的文件,我也不知道在 cake 2.0 中,因为我没有测试它,但在 1.3 中您需要使用 sqlite3,因为另一个不支持 sqlite3 只是以前的版本...您可以将数据库更改为 ../cake_blog_tutorial 以便它出现在您的应用程序文件夹中而不是 webroot 中(以防止从外部访问) 谢谢你,Api55!你回答我的问题!该文件会在 webroot 文件夹(或您选择的其他相关文件夹,如您的示例中)中自动创建。 CakePHP 支持 SQLite3,使用 'Database/Sqlite'。你可以看到这个打开 lib\Cake\Model\Datasource\Database\Sqlite.php 【参考方案1】:

简而言之,CakePHP 2.0 中的 Sqlite3 数据库采用如下配置:

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

然后会在 webroot 目录中自动创建 sqlite 文件(除非您在数据库名称前面加上相对路径)。

顺便说一句,您可以通过将数据库名称更改为“:memory:”来使用内存中的 Sqlite 数据库(例如,用于测试目的),例如:

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

【讨论】:

此解决方案对 CakePHP 3 也有效

以上是关于在 CakePHP 2.0 中使用 SQLite3的主要内容,如果未能解决你的问题,请参考以下文章

CakePHP 2.0 确定点击了哪个提交按钮

CakePHP 2.0 无法保存

cakephp 2.0 中的忘记密码功能

CakePHP-2.0:如何使用 CakEmail 和 SMTP 设置从 gmail 帐户发送电子邮件?

尝试使用 cakephp 2.0 保存表单数组数据

CakePHP 2.0 不保存