【问题标题】:Incompatible postgis 2.1 for postgresql 9.3.3 homebrew os x 10.10postgresql 9.3.3 homebrew os x 10.10 的 postgis 2.1 不兼容
【发布时间】:2015-06-22 09:39:10
【问题描述】:

我已从 OS X 10.9 升级到 10.10 Yosemite。我正在使用 postgis 2.1 运行 postgresql 9.3.3。在升级到 OS X 10.10 之前我没有进行 pgdump(我知道,我知道,杀了我……)但我有原始数据目录。我做了一个 brew install postgresql 并得到了 9.4.4。所以我用 Homebrew 安装了 Postgresql 9.3.9(我能找到的唯一 9.3 版本)。还 brew install postgis。然后我得到了用于 Postgresql 9.4.4 的 2.1 版 Postgis。我尝试安装 postgis20,但这不适用于我的数据库。

当我启动 Postgresql 9.3.3 时,我可以看到我的所有数据库,但是当我浏览时出现错误:

ERROR:  could not access file "$libdir/postgis-2.1": No such file or directory

我试图链接到 $libdir 目录中的 posts-2.1,但随后我收到以下消息:

ERROR:  incompatible library     "/usr/local/Cellar/postgresql93/9.3.9/lib/postgis-2.1.so": version mismatch
DETAIL:  Server is version 9.3, library is version 9.4.

显然我需要一个用于 Postgresql 9.3 的 postgis-2.1,但我不知道如何解决。

如果我尝试运行 pg_dumpall 我会收到此错误(我猜很明显):

➜ ./pg_dumpall >> old_backup.sql                                                                                             
pg_dump: Dumping the contents of table "darwin_test" failed: PQgetResult() failed.
pg_dump: Error message from server: ERROR:  could not load library "/usr/local/Cellar/postgresql/9.3.3/lib/postgis-2.1.so": dlopen(/usr/local/Cellar/postgresql/9.3.3/lib/postgis-2.1.so, 10): Symbol not found: _json_tokener_errors
Referenced from: /usr/local/Cellar/postgresql/9.3.3/lib/postgis-2.1.so
Expected in: /usr/local/lib/libjson-c.2.dylib
in /usr/local/Cellar/postgresql/9.3.3/lib/postgis-2.1.so

那么如何让 postgis-2.1 再次与 postgresql 9.3.3 一起工作? 在自制软件中,我只找到 postgresql94 的 postgis-2.1。

【问题讨论】:

    标签: postgresql osx-yosemite postgis


    【解决方案1】:

    使用brew edit postgis 将安装脚本中的postgresql 引用更改为postgresql93,然后运行brew install postgis。您可能还需要使用 brew link postgresql93brew unlink postgresql 链接/取消链接 postgresql。

    【讨论】:

    • 谢谢。我确信这会起作用,但实际上我确实从http://www.kyngchaos.com/software/postgres 安装了 PostgreSQL 9.3.9 和 Postgis 2.1。数据目录适用于“原始”版本。然后我进行了备份/导出并使用brew install 安装了 PostgreSQL 9.4 和 Postgis
    • @Joey,您提到在公式文件中更新对postgresql 的引用。您能否更明确地说明引用的位置?
    • 您可以使用 grep 查找 postgresql 的文件以找到要替换为 postgresql93 的引用
    猜你喜欢
    • 2015-09-10
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    • 2012-03-16
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 2015-03-16
    相关资源
    最近更新 更多