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

使用sqliteodbc调用json_extract()时出现函数不存在错误

问题解决:ODBC驱动执行json_extract报错

问题原因

你使用的ch-werner SQLite ODBC驱动对应的SQLite版本可能低于3.9.0(SQLite 3.9.0才正式内置JSON函数),或者驱动编译时未包含JSON扩展模块。而SQLite DB Browser使用的SQLite版本支持JSON函数,因此能正常运行语句。

解决步骤

1. 确认驱动的SQLite版本

在VBA代码中先执行版本查询,明确当前驱动对应的SQLite版本:

str_cnxn = "Driver={SQLite3 ODBC Driver};Database=" & db_path
Dim Cnxn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Cnxn.Open str_cnxn
rst.Open "SELECT sqlite_version();", Cnxn, adOpenForwardOnly, adLockReadOnly
Debug.Print "SQLite版本:" & rst(0)
rst.Close

如果版本低于3.9.0,直接升级驱动即可。

2. 升级或更换ODBC驱动

  • 若继续使用ch-werner的驱动,下载其最新版(新版通常默认内置JSON支持),或选择编译时包含JSON扩展的版本。
  • 也可更换为SQLite官方维护的ODBC驱动,确保版本在3.9.0以上,这类驱动一般默认支持JSON函数。

3. 尝试加载JSON扩展(部分驱动支持)

如果驱动允许加载扩展,可在打开连接后执行加载命令:

str_cnxn = "Driver={SQLite3 ODBC Driver};Database=" & db_path & ";LoadExtension=1"
Cnxn.Open str_cnxn
' 加载JSON扩展,注意json1.dll路径需匹配你的系统环境
Cnxn.Execute "SELECT load_extension('json1');"
' 之后执行原有查询
rst.Open "Select *,json_extract(pdf_links, '$.root')  as root from book where book_id=10", Cnxn, adOpenForwardOnly, adLockReadOnly

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 08:01:21