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

Node环境下SQLite执行带RETURNING的INSERT语句报语法错误如何解决

问题根因

  • SQLite的RETURNING插入返回语法仅支持3.35.0及以上版本,低于该版本的SQLite运行环境会直接抛出语法错误。
  • 你使用的Node.js SQLite驱动(常见为sqlite3包)内置的SQLite内核版本低于3.35.0,因此即使官方文档标注支持该语法,实际运行时也会报错。

解决方案

方案1:升级依赖直接使用RETURNING语法

升级sqlite3包到最新版本,新版本内置的SQLite内核已经兼容3.35.0+的所有特性:

npm install sqlite3@latest

升级完成后重启服务即可正常执行你原有带RETURNING的插入语句。

方案2:低版本兼容写法

如果因环境限制无法升级依赖,可以通过sqlite3内置的lastID属性实现相同效果:

// 不要用箭头函数,否则无法获取this上下文的lastID
db.run(`INSERT INTO lists (name) VALUES (?);`, [name], function(err) {
  if (err) {
    // 自定义错误处理逻辑
    return
  }
  // 用刚生成的自增id查询完整条目,等价于RETURNING *的效果
  db.get(`SELECT * FROM lists WHERE id = ?`, [this.lastID], (err, row) => {
    // 此处row即为插入完成的完整条目数据
    ...
  })
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:15:02