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

Laravel报错1364:classifieds表identifier字段无默认值排查

报错常见排查方向

当前执行的插入SQL为:
insert into \classifieds` (`vehicle_id`, `vehicle_type`, `updated_at`, `created_at`) values (19983, App\Models\Car, 2021-04-27 16:27:56, 2021-04-27 16:27:56)`
触发的数据库层面报错为:

SQLSTATE[HY000]: General error: 1364 Field 'identifier' doesn't have a default value

结合近一周修改代码后才出现问题的场景,可按以下方向定位原因:

  • 核对数据库表结构的实际变动
    近一周的代码修改大概率伴随数据库迁移操作:如果之前identifier字段允许为空、或配置了数据库层面的默认值,近期迁移将该字段调整为非空且移除默认值配置,而现有插入逻辑本身没有给该字段赋值,就会直接触发报错。可直接连库查看classifieds表的identifier字段属性,确认其是否为非空、是否存在默认值。
  • 检查模型批量赋值配置的改动
    虽然此前$fillable配置运行正常,但需确认:
    • 近期是否在代码中新增了给identifier字段赋值的逻辑,但没有把该字段加入$fillable白名单,导致模型自动过滤掉该字段的赋值,最终生成的插入SQL中不会包含这个字段
    • 是否在修改代码时不小心覆盖了原有$fillable配置,或是将配置切换为$guarded时遗漏了identifier字段的排除规则
  • 排查业务逻辑中的赋值丢失
    从生成的SQL可以看到,当前插入语句完全没有包含identifier字段,说明整个赋值流程中没有给这个字段传入值。大概率是近期修改代码时,删掉了原本存在的identifier赋值步骤——比如原先在创建分类记录的数组中,本来有'identifier' => $生成的唯一业务标识的配置,改动时不慎遗漏。
  • 验证模型事件的绑定状态
    如果之前identifier字段的值是通过模型的创建监听事件自动生成填充的,近期修改代码时如果注释、移除了对应的事件绑定逻辑,就会导致字段值没有被自动填充,最终插入数据库时因字段无默认值触发报错。

内容的提问来源于stack exchange,提问作者Tomas C. Lopes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 01:15:03