查询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
相关产品推荐
相关产品推荐

