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

SQLite3执行INSERT语句报错unrecognized token/no such column排查

错误根因

你的INSERT语句执行失败的核心原因是:包裹字符串值的引号是排版用的智能弯单引号(‘/’),不是SQL语法规定的ASCII半角直单引号(')。
SQL解析器不会把弯单引号识别为字符串的边界符号,解析‘2022-06-30’这段内容时,会把左弯引号后的内容直接当成SQL语法元素解析,读到30’位置时,右弯引号属于无法识别的非法字符,因此抛出unrecognized token: "30’"错误。

其他尝试报错的原因
  • 双引号包裹值报“列不存在”:SQLite默认遵循ANSI SQL标准,双引号的作用是包裹表名、列名这类标识符,不是字符串边界,因此双引号包裹的内容会被解析为列名,自然触发列不存在的错误。
  • 双引号/单引号包裹列名报“无对应列”:你使用的引号是全角中文引号,不是英文半角引号,解析器会把引号本身当成列名的一部分,去查找名为“Date”或者'Date'的列,当然找不到匹配的字段。
可正常执行的正确语句

所有语法符号全部切换为英文半角,字符串用半角单引号包裹,列名无特殊字符不需要额外加引号:

INSERT INTO orphan_dbis_consolidated_report (Date, Host, Usage, Port, Wf_Context_Id, Automation_Name)
VALUES ('2022-06-30', 'db167019.bwi101.service-now.com', 'Read_Replica', '3400', '8778405edb501d983050ac44d49619a5', 'Cid_CloneEngineContextCLN0535392');
避坑提示
  • 写SQL时所有语法相关符号(引号、逗号、括号、分号、等号)必须使用英文半角输入,不要开中文输入法输符号,也不要直接从Word、网页等会自动把直引号替换为弯引号的编辑器里直接复制SQL语句。
  • 列名、表名如果不包含空格、特殊字符、SQL保留字,不需要加任何引号包裹,减少不必要的解析问题。
  • SQLite中字符串值固定用半角单引号包裹,不要用双引号,除非你手动修改了SQLITE_DQS参数开启双引号字符串兼容,否则默认配置下双引号仅用于标识数据库对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:57:21