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

PostgreSQL使用setweight()执行全文搜索时出现缓存查找失败错误

解决PostgreSQL 9.6.8中cache lookup failed for function 3625错误

这个错误本质是PostgreSQL的系统缓存无法找到OID为3625的函数记录,通常出现在系统缓存与实际系统目录数据不一致的场景下——你单独执行单侧语句时缓存能正常加载,但拼接后触发了缓存的异常逻辑。下面是几个可尝试的解决步骤:

  • 先定位出错的函数
    先执行这条查询,明确OID 3625对应的具体函数:

    SELECT proname, prosrc, pronamespace::regnamespace FROM pg_proc WHERE oid = 3625;
    

    这能帮你确认是setweight/to_tsvector这类文本搜索系统函数,还是自定义函数出现了异常。

  • 清空目标函数缓存
    如果确认是系统函数的缓存问题,直接清空该函数的缓存再试:

    SELECT pg_clear_function_cache(3625);
    

    执行完成后重新运行你的UPDATE语句,看是否解决问题。

  • 重启PostgreSQL服务
    若清空单个函数缓存无效,彻底重启服务会重置所有系统缓存,重新加载系统目录数据。在Fedora 27上,针对PostgreSQL 9.6的重启命令是:

    sudo systemctl restart postgresql-9.6.service
    

    这是解决缓存不一致问题最直接的方法,多数这类奇怪的缓存异常重启后就能消失。

  • 检查文本搜索配置完整性
    虽然你单独执行语句没问题,但还是确认下french文本搜索配置是否正常存在:

    SELECT cfgname, cfgowner FROM pg_ts_config WHERE cfgname = 'french';
    

    若配置缺失,可能需要重新安装PostgreSQL的法语文本搜索相关包(Fedora上通常是postgresql9.6-contrib类包,不过你单独能执行大概率是存在的,确认下更稳妥)。

  • 极端情况:修复系统目录
    如果以上方法都无效,可能是系统目录存在损坏,可以尝试重新索引系统表:

    sudo -u postgres reindexdb --system your_database_name
    

    注意执行前请务必备份数据库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:40:07