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

Node.js多查询执行失败:插入后无法通过自增ID查询数据

问题分析与解决方法

核心问题排查

  • 表名不匹配:插入操作的表是hc_servicesdetail,但查询语句里用的是services_detail,表名不一致直接导致查询无结果甚至报错,必须将查询的表名统一为hc_servicesdetail。
  • 字段名不一致:插入时用的是serviceId、genderTypeId(驼峰命名),但查询里写的是sd.service_id、sd.gender_type_id(下划线命名),要确保SQL语句里的字段名和数据库表的实际字段名完全一致。
  • 关联表字段错误:s.service_names.time明显存在语法问题,services表不可能有嵌套属性的字段,根据实际需求调整,比如改为s.time或s.service_name。
  • 缺少错误捕获:代码没有错误处理逻辑,无法定位查询失败的具体原因,必须添加try-catch捕获并打印错误信息。

修改后的示例代码

static async addServiceDetail(shopId, serviceId, genderTypeId, price, serviceName) {
  try {
    const sql2 = `INSERT INTO hc_servicesdetail (shopId, serviceId, genderTypeId, price, serviceName) VALUES (?, ?, ?, ?, ?)`;
    const values = [shopId, serviceId, genderTypeId, price, serviceName];
    const [datass] = await pool.execute(sql2, values);
    const last_inserted_id = datass.insertId;

    // 修正表名、字段名,调整关联表字段
    const sql3 = `SELECT sd.serviceId, sd.genderTypeId, sd.price, s.time 
                  FROM hc_servicesdetail sd 
                  JOIN services s ON sd.serviceId = s.id 
                  WHERE sd.id = ?`;
    const [rows2] = await pool.execute(sql3, [last_inserted_id]);
    console.log(rows2);
  } catch (err) {
    console.error('操作失败:', err);
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:13:14