我正在尝试在 Amazon Linux AMI 上运行的 PostgreSQL 数据库上启用 hstore。我已经克服了很多困难,但最终还是遇到了这个无法解决的错误:
ERROR: could not load library "/usr/lib64/pgsql/hstore.so": /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/lib64/pgsql/hstore.so)
我运行ldd --version
以获取我的 GLIBC 版本并且它返回ldd (GNU libc) 2.17
。
我遇到的唯一解决方案是
运行
yum update
,这没有多大意义,因为我的系统似乎正在运行比所需的更新的版本。根据您系统上的版本重新编译程序
glibc
,我不太明白。我需要重新编译哪个程序?PostgreSQL?
这件事让我发疯了好几天,我已经陷入困境。任何帮助我都非常感谢!
答案1
错误在于hstore
共享库,因此它可能是唯一需要使用 GLIBC 版本进行编译的库。您的 postgres 包中包含的库显然是使用 2.14 版编译的,而您的是 2.17 版。
通常hstore
应该对更高级别的版本感到满意,但它所做的检查显然是“等于 2.14”而不是“大于或等于 2.14”。
文章PostgreSQL 功能亮点:hstore
描述如何hstore
从源代码安装库:
下载源代码并安装核心后,执行以下命令。
cd $PG_SOURCE_ROOT cd contrib/hstore make install
此时所有与 hstore 相关的库和文件都安装在 $INSTALL_FOLDER/share/extension 中。
$ ls $INSTALL_FOLDER/share/extension hstore--1.0--1.1.sql hstore--1.1.sql hstore--unpackaged--1.0.sql hstore.control
然后连接到您的 Postgres 服务器并使用 CREATE EXTENSION 命令完成 hstore 安装。
postgres=# CREATE EXTENSION hstore; CREATE EXTENSION postgres=# \dx hstore List of installed extensions Name | Version | Schema | Description --------+---------+--------+-------------------------------------------------- hstore | 1.1 | public | data type for storing sets of (key, value) pairs (1 row)
使用 psql 客户端,“\dx”可以检查服务器上已安装的扩展列表。
答案2
我在 Manjaro Linux(Arch 的一个分支)上运行,在将 Postgres 从版本 10 升级到 11 后出现了这个问题。
(对于我来说,路径略有不同。我得到:could not load library "/usr/lib/postgresql/hstore.so"
。)
我关注了arch wiki 关于升级 postgres 的说明,并且很快就启动并运行了。
答案3
获取较新的 hstore。所以您的 hstore 对于您运行的系统来说太旧了。或者尝试找到 compat-glibc 包进行粘合。