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

查询SQLite正常但插入数据返回空响应,求问题排查

SQLite插入数据返回空响应排查

可以正常查询SQLite数据库获取数据,但执行插入操作时得到空响应。

可正常返回结果的查询语句

const response = await sql('SELECT * FROM work_orders ORDER BY CASE WHEN status = "OPEN" THEN 1 WHEN status = "CLOSED" THEN 2 ELSE 3 END')

无法正常工作的插入语句

const response = await sql('INSERT INTO work_orders (name, status) VALUES (?, "OPEN")', workOrderName);
return res.status(201).json({ response });

注:表创建时包含id INTEGER PRIMARY KEY AUTOINCREMENT字段

可能的问题点及解决办法

  • SQLite插入的返回特性:SQLite的INSERT语句本身不会返回插入的行数据,多数Node.js SQLite库执行插入后,返回的是包含lastID(自增ID)、changes(影响行数)的结果对象,而非插入记录。如果你的sql函数返回空,可能是对返回值的预期错误。
  • 参数传递格式错误:部分SQL库要求参数以数组形式传递,而非单个值。把参数改成数组试试:
    const response = await sql('INSERT INTO work_orders (name, status) VALUES (?, "OPEN")', [workOrderName]);
    
  • 未主动查询插入后的记录:如果需要返回插入的完整数据,插入后要手动查询刚新增的记录,比如利用自增ID:
    await sql('INSERT INTO work_orders (name, status) VALUES (?, "OPEN")', [workOrderName]);
    const newOrder = await sql('SELECT * FROM work_orders WHERE id = last_insert_rowid()');
    return res.status(201).json({ response: newOrder });
    
  • 事务未提交:如果代码中开启了事务但未提交,插入操作不会生效,也可能导致异常返回。检查是否有未完成的事务逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:57:18