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

Laravel 9.x插入数据报错General error:1364,字段'name'无默认值

解决Laravel 9.x插入数据时General error: 1364 Field 'name' doesn't have a default value报错

以下是直接可行的排查和解决步骤:

  • 确认迁移变更已生效
    不要仅依赖迁移文件,直接查看数据库表结构,确认name字段的Null属性是否为YES(设置nullable()后),或是否存在默认值(设置default('')后)。若数据库字段仍为必填状态,执行php artisan migrate:refresh(会重置表数据)或php artisan migrate:rollback && php artisan migrate重新执行迁移,确保变更落地。

  • 检查数据插入逻辑
    验证规则通过不代表实际插入时传递了name字段:

    • 确认是否使用$request->all()或正确的$request->only(['name', 'username', 'password'])获取所有必填字段;
    • 手动赋值模型时,是否遗漏$model->name = $request->name;这类代码;
    • 排查代码中是否不小心将name字段值设为null或空字符串,而数据库实际仍为必填状态(若迁移未生效)。
  • 验证模型可填充字段
    检查模型的$fillable数组是否准确包含name字段,避免拼写错误(比如写成names)。也可临时替换为protected $guarded = [];(允许所有字段批量赋值),排除$fillable配置错误的可能。

  • 排查数据库严格模式
    打开config/database.php,找到mysql配置下的strict选项,暂时设为false测试是否还报错。若报错消失,说明严格模式下即使字段nullable,Laravel未正确传递null值导致数据库报错。这种情况可调整插入逻辑,确保未传递的nullable字段显式设为null,或保持strict模式并确保迁移和数据传递都正确。

  • 检查模型观察者/全局作用域
    若模型设置了creating或saving观察者,排查是否在观察者逻辑中修改或清空了name字段值,导致插入时该字段缺失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 20:01:54