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
相关产品推荐
相关产品推荐

