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

sqlite3执行UPDATE命令后BLOB类型字段未更新问题求助

常见原因及对应解决方法

  • 参数类型错误:你代码里的image变量必须传入multer返回的文件buffer属性,也就是req.file.buffer,如果误传了整个文件对象、base64字符串或者其他非Buffer类型的数据,sqlite3会默认将其转为普通字符串存储,不会抛出错误但实际存储的值不符合预期,看起来就像更新失败。
  • 未匹配到目标行:UPDATE语句执行时如果没有匹配到满足WHERE id=2条件的行,不会触发报错但不会修改任何数据。你可以在回调函数里打印this.changes,这个值代表本次操作实际影响的行数:如果值为0,说明USER表中不存在id为2的记录,需要检查id参数是否正确。
  • 表名是保留关键字:USER属于SQLite的保留关键字,直接作为表名使用可能出现解析异常,建议给表名加上反引号包裹,修改SQL语句为:
    const stmt = 'UPDATE `USER` SET image=? WHERE id = ?';
    
  • 读取验证逻辑错误:如果this.changes返回值为1,说明更新已经执行成功,大概率是你后续查询BLOB字段的逻辑错误,没有正确将存储的二进制数据转为可使用的Buffer格式,误以为没有更新成功。
  • 多数据库文件混淆:检查你连接的数据库路径是否正确,是否存在多个同名数据库文件,你更新的和后续查询的不是同一个文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:06:03