在我的yii2高级模板中,我得到了数据库的异常SQLSTATE [22003]。
出现此错误消息:
SQLSTATE [22003]:数值超出范围:1264第1行的列'created_at'超出范围值 正在执行的SQL是:INSERT INTO
user
(username
,password_hash
,auth_key
,status
,created_at
,updated_at
)VALUES('test','test@email.it','someval','someval',10,NOW(),NOW())
我检查了导致此异常的字段(我假设这是日期字段created_at和updated_at)并且它们都是int(20)。
在模型中我有时间戳行为:
/**
* @inheritdoc
*/
public function behaviors()
{
return [
[
'class' => TimestampBehavior::className(),
'attributes' => [
ActiveRecord::EVENT_BEFORE_INSERT => ['created_at', 'updated_at'],
ActiveRecord::EVENT_BEFORE_UPDATE => ['updated_at'],
],
'value' => new \yii\db\Expression('NOW()')
],
];
}
我真的不知道是什么导致了这个错误。这是在yii2高级模板中插入的标准注册功能。
提前感谢您的帮助
答案 0 :(得分:1)
NOW()
的值不是整数,而是2016-06-13 13:36:28
,而不是整数,所以将表更改为timestamp,datetime或varchar
ALTER TABLE `user` CHANGE `created_at` `created_at` TIMESTAMP NOT NULL;
ALTER TABLE `user` CHANGE `updated_at` `updated_at` TIMESTAMP NOT NULL;
并在NOW()