【问题标题】:How to configure SQLite in Kohana 3?如何在 Kohana 3 中配置 SQLite?
【发布时间】:2011-09-25 09:00:21
【问题描述】:

我正在努力寻找有关如何在 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,
),

【问题讨论】:

    标签: sql sqlite configuration kohana kohana-3


    【解决方案1】:

    您可以通过数据库模块使用 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 以外的数据库系统。

    【讨论】:

    • @d4rky- 我已经在 3.2 上测试过了,但它不起作用。据我所知,Kohana 的 PDO 框架不包含 SQLite 驱动程序。
    • PDO 是 PHP 的一部分,而不是 Kohana 的,所以您的 PHP 很可能没有 sqlite 驱动程序。 php.net/manual/en/book.pdo.php
    • @k4rky- 没错,它确实有效,但只有在我将字符集从“utf8”更改为 NULL 之后。我编辑了您的答案以反映这一点。
    【解决方案2】:

    我发现,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();
    

    【讨论】:

      【解决方案3】:

      我不使用 Kohana,但这应该可以:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-08
        • 2011-02-19
        相关资源
        最近更新 更多