为什么可正常运行的多行MySQL查询在Node.js中无法执行?
故障原因
- SQL语句存在两处笔误,这是执行失败的核心原因:
- 表名分隔符错误:
FROM employees e. carmodels c中e后的.应为英文逗号,用来分隔多个查询表,正确写法为FROM employees e, carmodels c, sales st - 关联字段缺表别名:
c.id = stcarmodel_id漏了sales表别名的.标识,正确写法为c.id = st.carmodel_id
你在MySQL中执行时应该是手动修正了笔误所以能正常运行,Node.js中是直接执行了带语法错误的原始语句,所以触发报错。
- 表名分隔符错误:
- 额外优化建议:当前错误处理逻辑仅在控制台打印报错,未向前端返回响应,报错时前端会出现无响应超时问题,建议补充错误返回逻辑。
修正后的完整代码
// 修正两处SQL笔误 const query = `SELECT e.id, e.name, SUM(c.price) as totalSales FROM employees e, carmodels c, sales st WHERE e.id = st.employee_id AND c.id = st.carmodel_id GROUP BY e.id, e.name`; app.get("/employees", (req, res) => { db.query(query, (err, result) => { if (err) { console.log(err); // 补充错误响应 res.status(500).json({error: '查询失败', detail: err.message}); } else { res.send(result); } }); });
内容的提问来源于stack exchange,提问作者Wegoland
相关产品推荐
相关产品推荐

