You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel数据库数据插入报错原因咨询(datetime格式异常)

Laravel插入数据时Datetime格式错误问题分析

嘿,我来帮你排查这个报错的原因~

首先看你在tinker里执行的插入代码:

DB::table('users')->insert(['id'=>'1','name'=>'admin','email'=>'mihiran.chathuranga@gmail.com','remember_token'=>'1','created_at'=>' ','updated_at' => ' ']);

对应的错误信息是:

Illuminate/Database/QueryException with message 'SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: ' ' for column 'created_at' at row 1 (SQL: insert into `users` (`id`, `name`, `email`, `remember_token`, `created_at`, `updated_at`) values (1, admin, mihiran.chathuranga@gmail.com, 1, , ))'

报错原因

核心问题出在created_at和updated_at这两个字段上:

  • 这两个字段在Laravel默认的users表中是datetime/timestamp类型,MySQL对这类字段的格式有严格要求,必须是YYYY-MM-DD HH:MM:SS这种标准格式的字符串,或是合法的时间值。
  • 你传入的是空格' ',完全不符合datetime的格式规范,MySQL无法解析,因此抛出了Invalid datetime format的错误。

解决办法

给你几个实用的解决思路:

  • 让Laravel自动维护时间戳:如果你的User模型保留了默认的$timestamps = true;(这是Laravel默认配置),插入数据时可以直接省略created_at和updated_at字段,Laravel会自动帮你填充当前时间戳。示例代码:
    DB::table('users')->insert(['id'=>'1','name'=>'admin','email'=>'mihiran.chathuranga@gmail.com','remember_token'=>'1']);
    
  • 手动传入合法时间:如果一定要手动指定时间,可以用Laravel自带的Carbon类生成标准时间,或是直接写入符合格式的字符串:
    // 用Carbon生成当前时间
    DB::table('users')->insert([
        'id'=>'1',
        'name'=>'admin',
        'email'=>'mihiran.chathuranga@gmail.com',
        'remember_token'=>'1',
        'created_at' => \Carbon\Carbon::now(),
        'updated_at' => \Carbon\Carbon::now()
    ]);
    
    // 或者直接写入标准格式字符串
    DB::table('users')->insert([
        'id'=>'1',
        'name'=>'admin',
        'email'=>'mihiran.chathuranga@gmail.com',
        'remember_token'=>'1',
        'created_at' => '2024-05-20 14:30:00',
        'updated_at' => '2024-05-20 14:30:00'
    ]);
    

内容的提问来源于stack exchange,提问作者mihiran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:30:12