2016-11-18 63 views
0

下面是我的代碼,請告訴我,我錯了..如何開創全省時間戳字段而遷移笨與更新CURRENT_TIME

public function up(){ 

     $this->dbforge->add_field(array(
       'id'=> array(
        'type'   => 'int', 
        'constraint' => 11, 
        'auto_increment'=> TRUE, 
       ), 
       'ip_address'=> array(
        'type'  => 'VARCHAR', 
        'constraint'=> '40', 
       ), 
       'login'=> array(
        'type'  => 'VARCHAR', 
        'constraint'=> '50', 
       ), 
       'time'=> array(
        'type'  => 'timestamp', 
        'Default' => 'CURRENT_TIMESTAMP', 
        'ON UPDATE CURRENT_TIMESTAMP' => TRUE, 
       ), 
     )); 
     $this->dbforge->add_key('id',TRUE); 
     $this->dbforge->create_table('login_attempts'); 
    echo "table created";  
    } 

這個錯誤會產生上運行遷移

錯誤編號:

爲 '時間'

無效的默認值

CREATE TABLE login_attempts(ID INT(11)NOT NULL AUTO_INCREMENT, IP_ADDRESS VARCHAR(40)NOT NULL,登錄VARCHAR(50)NOT NULL,時間 時間戳NOT NULL DEFAULT 'CURRENT_TIMESTAMP',約束 pk_login_attempts PRIMARY KEY(ID ))默認的字符集= UTF8 COLLATE = utf8_general_ci

文件名:d:/xampp/htdocs/tank_auth/system/database/DB_driver.php

行號:691

回答

1

查看time列的默認值。在MySQL中CURRENT_TIMESTAMP不得在單個括號內。作爲笨並自動逃跑出於安全考慮默認值,則可以選擇通過像整個字符串:

'time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP', 

保留其他列,數組,因爲它們已經是。僅如上所示更改時間列。