如何在Kohana 3中配置SQLite?

时间:2011-09-25 09:00:22

标签: sqlite configuration kohana kohana-3

我很难找到有关如何在Kohana 3.2中配置SQLite的任何信息。我主要需要知道:

  • 我应该将主机名,数据库,用户名和密码设置为(默认用户和无密码)?

  • 另外,如何设置SQLite数据库文件的路径?

  • “类型”应该是什么?我试过“sqlite”,但收到错误Class 'Database_Sqlite' not found

这是我目前的配置选项:

'exportedDatabase' => array
(
    'type'       => 'sqlite',
    'connection' => array(
        /**
         * The following options are available for MySQL:
         *
         * string   hostname     server hostname, or socket
         * string   database     database name
         * string   username     database username
         * string   password     database password
         * boolean  persistent   use persistent connections?
         *
         * Ports and sockets may be appended to the hostname.
         */
        'hostname'   => $hostname,
        'database'   => $database,
        'username'   => $username,
        'password'   => $password,
        'persistent' => FALSE,
    ),
    'table_prefix' => '',
    'charset'      => 'utf8',
    'caching'      => FALSE,
    'profiling'    => TRUE,
),

3 个答案:

答案 0 :(得分:5)

您可以通过数据库模块使用PDO。正确的配置方式如下:

'exportedDatabase' => array(
    'type'       => 'pdo',
    'connection' => array(
        'dsn'        => 'sqlite:/path/to/file.sqlite',
        'persistent' => FALSE,
    ),
    'table_prefix' => '',
    'charset'      => NULL, /* IMPORTANT- charset 'utf8' breaks sqlite(?) */ 
    'caching'      => FALSE,
    'profiling'    => TRUE,
),

在Kohana中使用PDO的一个缺点是,在ORM中,您必须在模型中手动指定所有字段(出于性能原因,您应该这样做),因为不同的数据库系统处理表字段的列表。

还有由banditron创建的real database模块。您必须记住,它不是数据库模块的替代品,因此Kohana的ORM将使用它。除此之外,它非常整洁,并且对SQLite以外的数据库系统有广泛的支持。

答案 1 :(得分:3)

正如我发现的那样,Kohana 3.x实际上并不支持SQLite。有一个不受支持的模块,据我所知,它不起作用。

虽然使用PDO很容易,但语法与Kohana的ORM几乎相同:

$db = new PDO('sqlite:' . $dbFilePath);

$query = $db->prepare('CREATE TABLE example (id INTEGER PRIMARY KEY, something TEXT)');
$query->execute();

$query = $db->prepare("INSERT INTO example (id, something) VALUES (:id, :something)");
$query->bindParam(':id', $id);
$query->bindParam(':something', $something);
$query->execute();

答案 2 :(得分:-1)

我不使用Kohana,但这应该有效:

'hostname' => /path/to/your/sql/lite/file.sqlite
'database' => ''
'username' => ''
'password' => ''