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

Laravel报错SQLSTATE[HY000]: 字段'id'无默认值求解决

解决Laravel中SQLSTATE[HY000]: General error: 1364 Field 'id' doesn't have a default value报错

常见修复方案

1. 确保数据库表id字段为自增主键

  • 若用Laravel迁移创建表,迁移文件需包含自增主键定义:
// Laravel 8+ 写法
$table->id();

// 旧版本写法
$table->increments('id');
  • 手动建表的话,直接在数据库管理工具中修改id字段,设置为INT类型、开启自增并设为主键。

2. 检查模型主键配置

对应Model类需确认主键配置正确(默认id为自增主键,无需额外配置,若主键名修改才需手动指定):

class YourModel extends Model
{
    protected $primaryKey = 'id'; // 自定义主键名时修改此处
    public $incrementing = true; // 确保开启自增,默认值为true
}

3. 避免插入时手动传递null给id

创建数据时不要手动给id赋值为null,让数据库自动生成:

// 错误示例
YourModel::create(['id' => null, 'field_name' => 'value']);

// 正确写法
YourModel::create(['field_name' => 'value']);

4. 临时关闭MySQL严格模式(不推荐长期使用)

修改config/database.php中MySQL配置,关闭严格模式:

'mysql' => [
    // ...其他配置项
    'strict' => false,
],

此方案仅作临时应急,严格模式能有效规避数据库层面的潜在问题,建议优先采用前三种方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:45:39