postgresql - 如何修复 postgresql 添加扩展缓存查找失败
问题描述
尝试添加 pgcrypto 扩展失败,“函数 1 的缓存查找失败,SQL xtate:XX000”
这是在 Ubuntu 18.04 上运行的 postgresql 11。这个数据库实例已经运行了一年多,没有任何其他明显的问题。为什么我会收到此错误,阻止我加载任何扩展,而不仅仅是 pgcrypto?
“从 pg_extension 中选择 *;” 返回单个扩展名“plpgsql”。
“从 pg_available_extensions 中选择 *;” 返回一个长列表,包括 pgcrypto。
这是否意味着安装了 contrib,但其他原因导致错误,或者它是否表明 contrib 安装中有错误?有没有办法修复正在做的事情?
解决方案
我遇到过同样的问题,
=# 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 连接以创建新数据库、加载一些数据、删除另一个数据库并重命名新创建的数据库后进入此状态。我不知道其中哪些步骤做到了。
推荐阅读
- python - ModuleNotFoundError:没有名为“tensorflow.contrib”的模块;'tensorflow' 不是一个包
- haskell - 使用封闭类型族编写函数“如果类型 A,则类型 X,否则类型 Y”
- python - 使用 Pyinstaller 转换后如何记住 Tkinter Entry 中的输入历史记录?
- r - 通过 ggplot2 抑制小提琴图中的分散抖动点
- c# - AutoMapper 更新 UseDestinationValue 在虚拟属性上未按预期工作
- sql-server - 我如何获得今年 2 月的第一个星期六?
- java - 为什么java打开页面时浏览量没有增加?
- ios - 更改 UISwitch 图像
- php - 与 PHP/Regex 匹配的智能括号
- azure - 无法缩减 CosmosDB 集合