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

使用Express Node.js+MySQL构建API遇SQL语法错误求助

排查ER_PARSE_ERROR: SQL语句为't'的问题

首先,从你给出的错误信息来看,MySQL收到的SQL语句居然是't'——这显然不是你在model层写的那些insert/select/update/delete语句。问题不在你提供的model代码里,而是出在调用这些model方法的上层代码(比如路由或controller)。

核心排查方向

  • 检查方法调用的笔误:看看你在路由/controller里是不是误调用了不存在的方法,比如把userModel.getUsers()写成了userModel.t()?或者某个变量名写错,导致意外把字符串't'传给了pool.query的第一个参数。
  • 排查所有pool.query的直接调用:有没有在其他地方跳过model,直接调用了pool.query,并且错误地传入了't'作为SQL语句?
  • 添加日志定位:在每个路由处理函数里,打印你调用的model方法名和传入的参数,比如:
    console.log("Calling create method with data:", data);
    userModel.create(data, (err, res) => { ... });
    
    这样能快速确认哪一次调用触发了错误。

关于你提供的model代码

我仔细看了你的model代码,里面的SQL语句语法都是正确的:

  • insert语句的字段和占位符数量匹配
  • select/update/delete的语法也符合MariaDB的规范
    所以可以排除model本身的SQL语法问题。

快速定位技巧

暂时注释掉部分路由,逐个恢复并测试,这样能快速找到触发错误的那个路由/接口,进而定位到具体的调用错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:09:50