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

添加ORDER BY后触发psycopg2类型不匹配错误,搜索功能失效求助

问题解决:psycopg2 数据类型不匹配错误

报错信息:psycopg2.errors.DatatypeMismatch: AND的参数必须为boolean类型,而非character varying,错误指向第5行的ORDER BY bk_title。原本搜索过滤器可正常展示匹配结果,添加ORDER BY bk_title语句后搜索功能失效并抛出该错误。

错误原因

  • 初始SQL包含WHERE NOT bk_delete_ind与ORDER BY bk_title
  • 存在搜索关键词时,直接在SQL末尾拼接AND bk_title ILIKE %s,导致SQL语法完全错误:AND条件被错误放在了ORDER BY子句之后,数据库解析时将这个位置的AND当成ORDER BY的一部分,从而触发数据类型不匹配的报错。

解决方案

  • 必须将搜索条件拼接到WHERE子句的末尾,而非整个SQL语句的末尾,再统一添加ORDER BY子句。
  • 修正后的SQL结构示例:
SELECT * FROM books WHERE NOT bk_delete_ind AND bk_title ILIKE %s ORDER BY bk_title
  • 代码逻辑示例(伪代码):
sql = "SELECT * FROM books WHERE NOT bk_delete_ind"
params = []
if search_keyword:
    sql += " AND bk_title ILIKE %s"
    params.append(f"%{search_keyword}%")
sql += " ORDER BY bk_title"
# 后续执行sql和params

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:50:32