【问题标题】:Yii2 SQLSTATE[22003] during insertYii2 SQLSTATE[22003] 在插入期间
【发布时间】:2016-10-13 13:28:22
【问题描述】:

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

带有此错误消息:

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

提前感谢您的帮助

【问题讨论】:

    标签: php mysql yii2


    【解决方案1】:

    NOW() 的值不是整数,它类似于2016-06-13 13:36:28,它不是整数,所以将您的表更改为时间戳、日期时间或 varchar

    ALTER TABLE `user` CHANGE `created_at` `created_at` TIMESTAMP NOT NULL;
    ALTER TABLE `user` CHANGE `updated_at` `updated_at` TIMESTAMP NOT NULL;
    

    并在NOW()周围使用引号

    【讨论】:

    • 嗨 Rishi 感谢您的回答。我现在试试
    • 很高兴为您提供帮助:)
    猜你喜欢
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 2018-07-18
    • 2020-10-24
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    相关资源
    最近更新 更多