以下是我的代码,请告诉我哪里错了..
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
答案 0 :(得分:1)
查看time
列的默认值。在MySQL中,CURRENT_TIMESTAMP
不能放在单括号中。由于CodeIgniter出于安全原因会自动转义默认值,您也可以传递整个字符串,如:
'time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
将其他列保留为已存在的数组。仅更改时间列,如上所示。