首页 > 解决方案 > 如何修复 postgresql 添加扩展缓存查找失败

问题描述

尝试添加 pgcrypto 扩展失败,“函数 1 的缓存查找失败,SQL xtate:XX000”

这是在 Ubuntu 18.04 上运行的 postgresql 11。这个数据库实例已经运行了一年多,没有任何其他明显的问题。为什么我会收到此错误,阻止我加载任何扩展,而不仅仅是 pgcrypto?

“从 pg_extension 中选择 *;” 返回单个扩展名“plpgsql”。

“从 pg_available_extensions 中选择 *;” 返回一个长列表,包括 pgcrypto。

这是否意味着安装了 contrib,但其他原因导致错误,或者它是否表明 contrib 安装中有错误?有没有办法修复正在做的事情?

标签: postgresqlubuntu

解决方案


我遇到过同样的问题,

=# CREATE EXTENSION IF NOT EXISTS pgcrypto;
ERROR:  cache lookup failed for function 1

=# select lanvalidator from pg_language where lanname='c';
 lanvalidator 
--------------
            1
(1 row)

解决方案与线程中的 OP 相同,

update pg_language set lanvalidator = 2247 where lanname = 'c';

之后,运行原始命令有效,

=# CREATE EXTENSION IF NOT EXISTS pgcrypto;
CREATE EXTENSION
=#

Postgresql 在通过 sqlalchemy 连接以创建新数据库、加载一些数据、删除另一个数据库并重命名新创建的数据库后进入此状态。我不知道其中哪些步骤做到了。


推荐阅读