为什么读取现有的sqlite数据库会生成一个新文件

时间:2013-11-20 17:08:01

标签: php sqlite codeigniter

我正在尝试使用PDO连接读取codeigniter中的现有sqlite数据库文件。我的问题实际上是两个方面:

  1. 读取现有的sqlite数据库实际上会创建一个新的db文件和原始数据库文件。假设原始数据库文件名为a.db,新文件名为a.db;dbname=

  2. 后续的db语句在a.db;dbname=上运行。我试图运行create table,在这个新的db文件中插入新值。两者都运行良好。但是,select语句不返回任何内容,也没有错误。

  3. 我对此感到困惑..请帮助。

    使用相关设置进行了更新:

    // sql
    
    $this->db->query('create table x (y int)');
    $this->db->query('insert into x values(6)');
    $result = $this->db->get('x')->result();  // $result is an empty array
    
    // config/database.php
    
    $active_group = 'default';
    $active_record = TRUE;
    
    $db['default']['hostname'] = 'sqlite:/home/perlwle/db/a.db';
    $db['default']['username'] = '';
    $db['default']['password'] = '';
    $db['default']['database'] = '';
    $db['default']['dbdriver'] = 'pdo';
    $db['default']['dbprefix'] = '';
    $db['default']['pconnect'] = TRUE;
    $db['default']['db_debug'] = TRUE;
    $db['default']['cache_on'] = FALSE;
    $db['default']['cachedir'] = '';
    $db['default']['char_set'] = 'utf8';
    $db['default']['dbcollat'] = 'utf8_general_ci';
    $db['default']['swap_pre'] = '';
    $db['default']['autoinit'] = TRUE;
    $db['default']['stricton'] = FALSE;
    

    /home/perlwle/db/a.db是sqlite数据库文件,由www-data拥有和写入。

    感谢。

1 个答案:

答案 0 :(得分:1)

这是CodeIgniter中的bug;你必须更新。