如何在更新时使用CURRENT_TIME在CODEIGNITER中迁移时创建TIMESTAMP字段

时间:2016-11-18 07:34:14

标签: codeigniter database-migration

以下是我的代码,请告诉我哪里错了..

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";       
    }

此错误将在运行迁移时生成

  

错误号码:

     

1067

     

“时间”

的默认值无效      

CREATE TABLE login_attempts(id int(11)NOT NULL AUTO_INCREMENT,   ip_address VARCHAR(40)NOT NULL,登录VARCHAR(50)NOT NULL,时间   timestamp NOT NULL DEFAULT'CURRENT_TIMESTAMP',CONSTRAINT   pk_login_attempts PRIMARY KEY(id))DEFAULT CHARACTER SET = utf8   COLLATE = utf8_general_ci

     

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

     

行号:691

1 个答案:

答案 0 :(得分:1)

查看time列的默认值。在MySQL中,CURRENT_TIMESTAMP不能放在单括号中。由于CodeIgniter出于安全原因会自动转义默认值,您也可以传递整个字符串,如:

'time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',

将其他列保留为已存在的数组。仅更改时间列,如上所示。