使用TxtAI执行SQL查询遇json_extract函数不存在错误求助
解决txtai在CentOS上执行SQL查询时的
json_extract函数不存在错误 问题原因
Windows系统中Python自带的SQLite版本通常较新(json_extract函数需要SQLite 3.9.0及以上版本支持),而CentOS默认预装的SQLite版本偏低(比如CentOS 7自带3.7.x版本),不支持JSON相关函数,导致txtai执行SQL查询时触发no such function: json_extract错误。
解决方案
方案1:升级CentOS系统的SQLite版本
通过编译安装新版SQLite,步骤如下:
- 安装编译依赖:
sudo yum install -y gcc make wget - 下载并编译安装新版SQLite(以3.44.0为例,可替换为最新稳定版):
wget https://www.sqlite.org/2023/sqlite-autoconf-3440000.tar.gz tar xzf sqlite-autoconf-3440000.tar.gz cd sqlite-autoconf-3440000 ./configure --prefix=/usr/local make sudo make install - 更新系统库缓存:
sudo ldconfig - 验证版本:执行
sqlite3 --version确认版本≥3.9.0;在Python环境中执行以下代码确认:import sqlite3 print(sqlite3.sqlite_version) - 注意:若使用虚拟环境,需重新创建虚拟环境并安装requirements.txt中的依赖,确保Python链接到新版SQLite。
方案2:修改查询逻辑规避json_extract调用
如果无法升级系统SQLite,可调整txtai的使用方式:
- 避免在SQL查询中直接使用
json_extract,改用txtai提供的非SQL查询API实现动态搜索需求; - 提前预处理数据,将需要提取的JSON字段内容存储为普通列,减少SQL中对JSON函数的依赖。
内容的提问来源于stack exchange,提问作者CJay
相关产品推荐
相关产品推荐

