2014-10-10 48 views
0

我正在使用CI面對一個非常奇怪的事情,我正在使用DBforge類來創建一個表,一切都很好,表的確是在我的數據庫上創建的。創建表並使用它 - Codeigniter

但是,當我嘗試使用新創建的表(插入,檢查是否存在等),我無處可去。 給出下面簡單的代碼(這兩種功能是一個模型裏)

function create_modules_table($tablename) 
{ 
      $fields = array(
      'module_name' => array(
        'type' => 'VARCHAR', 
        'constraint' => '100' 
      ), 
      'status' => array(
        'type' =>'VARCHAR', 
        'constraint' => '100' 
      ), 

    ); 
    $this->dbforge->add_key('module_name', TRUE); 
    $this->dbforge->add_field($fields); 
    return $this->dbforge->create_table($tablename); 
} 

其次是

function table_exists($table) 
{ 
    return $this->db->table_exists($table); 
} 

如果我運行

$this->create_modules_table('table'); 
$reply = $this->table_exists('table'); 

原來,$reply is returning false

我檢查我的數據庫 - 表格確定存在,100%正常工作。

所以我再次運行代碼,沒有刪除表中的數據庫,now the reply is true

第一次運行總是無法通過檢查,就好像CI沒有意識到DB中發生了某些變化。 **任何人都可以闡明這裏發生的事情嗎? **

+0

也許DBForge或數據庫庫緩存表的列表,並且它在創建表時不會更新? – Kryten 2014-10-10 22:30:22

+0

是的,我認爲同樣的事情,文檔上沒有任何內容,儘管..使它有點傻,因爲它使它很難用於表創建。 – Patrick 2014-10-10 22:35:44

回答

0

你可以看到解決方案。 This link

這是一個CI錯誤,它在通過DB_forge創建新表後不更新data_cache。