Diesel: OSX 和 PostgreSQL 上的 DLL 错误

创建于 2016-05-18  ·  3评论  ·  资料来源: diesel-rs/diesel

在运行 postgresql 的 OSX 10.11.4 笔记本电脑上试用diesel_demo。

一切都在迁移之前:

$ diesel migration run
thread '<main>' panicked at 'Error creating timestamp helper functions for Pg: DatabaseError("ERROR:  could not load library \"/usr/local/lib/postgresql/plpgsql.so\": dlopen(/usr/local/lib/postgresql/plpgsql.so, 10): Symbol not found: _DatumIsReadWriteExpandedObject\n  Referenced from: /usr/local/lib/postgresql/plpgsql.so\n  Expected in: /usr/local/opt/postgresql/bin/postgres\n in /usr/local/lib/postgresql/plpgsql.so\n")', ../src/libcore/result.rs:785
note: Run with `RUST_BACKTRACE=1` for a backtrace.
$ otool -l `which diesel` | grep libpq
 name /usr/local/opt/postgresql/lib/libpq.5.dylib (offset 24)

如您所见,diesel 链接到 libpq.5.dylib,但正在寻找 plpgsql.so(这在 linux 上有意义,但在 osx 上没有意义)。 我只能假设某处路径是为 linux 安装硬编码的。

最有用的评论

对于将来遇到此问题的任何人,这是由安装了 postgres 9.5 引起的,但指向 9.4 的数据目录(可能是因为您还没有运行pg_upgrade

所有3条评论

事情在我这边配置错误 - 已修复。

对于将来遇到此问题的任何人,这是由安装了 postgres 9.5 引起的,但指向 9.4 的数据目录(可能是因为您还没有运行pg_upgrade

@sgrif你能告诉我如何检查 postgres 指向的数据目录吗?

这样的东西会起作用吗?

// check installed version
$ postgres --version
postgres (PostgreSQL) 10.4

// check directory version
$ psql development_env
# select version();
                                                   version                                                    
--------------------------------------------------------------------------------------------------------------
 PostgreSQL 9.5.3 on x86_64-apple-darwin14.5.0, compiled by Apple LLVM version 7.0.2 (clang-700.1.81), 64-bit
(1 row)
此页面是否有帮助?
0 / 5 - 0 等级