【问题标题】:ERROR: incompatible library while creating extension in Postgresql错误:在 Postgresql 中创建扩展时库不兼容
【发布时间】:2020-06-11 23:45:48
【问题描述】:

我使用 Centos 7 和 Postgresql 12。我已经安装了 PostGIS 并成功创建了它的扩展。我现在正在尝试使用 create extension semver 安装 semver 扩展并收到以下错误:

错误:库不兼容 »/usr/pgsql-12/lib/semver.so«:版本 不匹配

根据开发人员的说法,这个版本应该适用于我的 Postgresql 12。为什么会出现这个错误?

谢谢!

【问题讨论】:

  • 你是如何安装semver的?听起来您的 .so 文件是针对早期版本的 Postgres 构建的。
  • 因为我想比较表中的软件版本。但这是最后一个版本...
  • 但是你从哪里得到.so 文件?即使对于相同版本的semver(例如0.21.0),您也需要为Postgres 12、11、10 等提供不同的.so 文件,而且听起来您的文件不是为Postgres 12 构建的。
  • 我通过 yum install pg-semver 安装了它,它安装了 "pg-semver-0.5.0-2.el7.x86_64"
  • 我在安装 semver 时遇到了一些麻烦,因为 yum 将 .so 文件放在了另一个 lib 文件夹中,而 postgresql 找不到它。这就是为什么我必须手动将 semver.so 文件移动到 postgresql 的 lib 文件夹以进行扩展。 (请参阅此处的问题:stackoverflow.com/questions/60395560/…

标签: postgresql postgresql-extensions


【解决方案1】:

扩展的 .so 二进制文件特定于 Postgres 的主要版本。

如果您通过yum 安装扩展程序,每个 Postgres 版本通常会有不同的包。例如,如果您使用 postgresql12-server 包安装 Postgres 12,那么您将使用 postgis30_12 包安装 PostGIS 3.0。

如果包名只是 pg-semver,没有 Postgres 版本号,那么它可能是为您的发行版的默认 postgresql-server 包准备的。 In CentOS 7,这似乎是 Postgres 9.2,因此这些文件无法在 Postgres 12 服务器上运行。

如果您找不到特定于 PG12 的包,则需要使用说明 here 自行构建。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-12
    • 2020-05-05
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 2014-11-07
    • 2016-01-04
    • 2010-10-21
    相关资源
    最近更新 更多