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

在Expo运行的SQLite中执行UPSERT出现语法错误如何解决

问题根因

  • 你的INSERT ... ON CONFLICT语法本身完全符合SQLite官方规范,报错和反引号、单行/多行排版没有关系,核心原因是你当前使用的SQLite版本低于3.24.0:UPSERT特性是SQLite在2018年6月发布的3.24.0版本才正式支持的,低于该版本的运行环境无法识别该语法,就会抛出near "on": syntax error的报错。

修复方案

  • 先执行命令SELECT sqlite_version();确认当前环境的SQLite版本,若版本低于3.24.0优先升级SQLite到最新稳定版即可解决问题。
  • 若无法升级SQLite版本,可以用传统的原子化两步写法替代UPSERT实现相同逻辑:
-- 先尝试更新对应key的value
UPDATE setup SET value = ? WHERE key = ?;
-- 若更新行数为0,说明key不存在,执行插入
INSERT INTO setup (key, value) SELECT ?, ? WHERE changes() = 0;
  • 如果是在安卓等内置旧版本SQLite的环境运行,安卓10及以上系统自带的SQLite版本才支持UPSERT语法,低版本安卓可以引入第三方SQLite库替换系统内置版本,或者直接使用上述替代方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 13:15:07