插入期间Yii2 SQLSTATE [22003]

时间:2016-06-13 07:59:40

标签: php mysql yii2

在我的yii2高级模板中,我得到了数据库的异常SQLSTATE [22003]。

出现此错误消息:

  

SQLSTATE [22003]:数值超出范围:1264第1行的列'created_at'超出范围值   正在执行的SQL是:INSERT INTO userusernameemailpassword_hashauth_keystatuscreated_atupdated_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高级模板中插入的标准注册功能。

提前感谢您的帮助

1 个答案:

答案 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()

周围使用引号