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

SQLSTATE[22007报错:products表category_id存入字符串'Earphone'问题排查

报错根因

你贴出的index()查询逻辑和本次报错无关,该报错出现在向products表新增/更新数据的写入逻辑中:

  • 错误提示明确说明你为整型字段category_id传入了字符串值Earphone,该字段只能存储对应分类的数字ID,不支持直接存储分类名称
  • 常见触发场景是前端提交产品表单时,把分类选择框的value设为了分类名称Earphone,而非对应分类的数字ID,导致后端接收到错误类型的参数直接写入数据库

修复步骤

  • 第一步:找到处理产品新增、编辑的后端接口代码,检查category_id参数的接收、赋值逻辑,确保写入数据库的是数字类型的分类ID
  • 第二步:调整前端分类选择组件配置,下拉选项的value绑定分类ID、展示文本绑定分类名称即可,示例:
<!-- 错误写法 -->
<select name="category_id">
  <option value="Earphone">耳机</option>
</select>

<!-- 正确写法 -->
<select name="category_id">
  <option value="1">耳机(Earphone)</option>
</select>
  • 第三步:后端新增参数校验,避免后续再出现同类问题,Laravel框架校验示例:
$request->validate([
    'category_id' => 'required|integer|exists:categories,id',
    // 补充其他字段的校验规则
]);
  • 可选优化:给category_id字段添加外键约束,从数据库层面保障写入的分类ID一定存在,迁移代码修改示例:
// 将原来的 $table->integer('category_id'); 替换为
$table->foreignId('category_id')->constrained()->onDelete('cascade');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:54:03