库未加载:/usr/local/lib/libpq.5.4.dylib。

189

我正在开发一个 Rails 应用程序。
使用了 postgresql-9.1.2-1-osx.dmg 安装了 PostgreSQL。
安装了 pg gem。
然后当我执行 rake db:create 命令时, 出现以下错误 -

dlopen(/Users/sathishvc/.rvm/gems/ruby-1.9.3-head@knome-vivacious/gems/pg-0.12.2/lib/pg_ext.bundle, 9): Library not loaded: /usr/local/lib/libpq.5.4.dylib

我检查了是否存在 /usr/local/lib/libpq.5.4.dylib,但并不存在。
所以它应该在系统的其他地方存在,或者我不知道是否需要安装其他软件。

请问有什么建议吗?

22个回答

399

如果您已经使用Homebrew更新了PostgreSQL(brew update && brew upgrade)或者升级了macOS(例如从Catalina到BigSur),那么只需要卸载pg gem即可:

gem uninstall pg
bundle install

路径将会为您自动纠正,无需卸载整个 PostgreSQL 群集。


2
brew update && brew upgrade 对我很有效,我甚至不需要卸载和重新安装pg。 - BananaNeil
4
如果您尝试了上述方法仍然遇到错误,brew link libpq --force 在我的情况下解决了问题。 - Popovici Andrei-Sorin
3
gem uninstall pg 和 bundle install 对我有用! - James
3
这应该是正确的答案,我个人认为。 - Marko Ćilimković
1
我的PG 14安装被Homebrew升级后出现了这个问题。上面的指令gem uninstall pg然后跟着bundle install对我来说是有效的。 - Steven Chanin
显示剩余4条评论

129

我正在使用OSX Monterey(M2芯片组),并且遇到了类似的问题。 运行(注意版本)有所帮助:


sudo ln -s /opt/homebrew/opt/postgresql@14/lib/postgresql@14/libpq.5.dylib /usr/local/lib/libpq.5.dylib

执行brew update、brew link --force、brew uninstall && brew install等操作均未成功。


2
我在更新到14.5时在Monterey上也必须做同样的事情。但是我没有使用sudo - nzajt
1
这个答案很有价值,我安装了 Ventura beta,在进行了 brew update 和 brew upgrade 后得到了这个结果。 - femiir
4
如果使用基于Apple Silicon的Mac电脑,您应该使用以下命令创建符号链接: sudo ln -s /opt/homebrew/opt/postgresql@14/lib/postgresql@14/libpq.5.dylib /usr/local/lib/libpq.5.dylib - Patryk Szczepański
9
这可能是由于brewpostgres重命名为postgres@14所致。 - Andrew
1
谢谢!这在我的苹果 M1 Pro,Monterrey 12.0.1 上有效。 - guero64
显示剩余4条评论

82

4
这在我的Rails 7和MacOS Monterey上有效。 - drjorgepolanco
1
这在Rails 6.1和MacOS Monterey上对我有效。 - toddmetheny
1
在我的Rails 6.1.5,Ruby 2.7.1和MBP M1 MacOS Monterey中工作得非常好(谢谢!) - ea0723
对我来说,使用ruby 2.6.5和rails 5.2.4可以正常工作。谢谢! - Claudio Scabbia Sepúlveda
在运行 brew update & brew upgrade 后对我很有效。 - carlitos
显示剩余3条评论

39

对我来说(在 MacOS Monterey 上),该文件最终出现在以下位置:/usr/local/opt/postgresql@14/lib/postgresql@14/libpq.5.dylib

因此,要修复最初的错误,请首先创建它正在寻找的目录,然后创建到现有文件的符号链接:

sudo mkdir -p /usr/local/opt/postgresql/lib/
sudo ln -s /usr/local/opt/postgresql@14/lib/postgresql@14/libpq.5.dylib /usr/local/opt/postgresql/lib/libpq.5.dylib

1
这正是解决我的问题的方法。昨天我第一次尝试使用postgis时,注意到我的postgresql文件夹中也有@14,这导致postgis在我的Java应用程序中无法正常工作。今天我回到这个rails应用程序上工作时出现了这个错误,我认为这可能会解决两个问题。 - PhilCowan
2
谢谢!这拯救了我的一天(蒙特雷,英特尔) - Hlib
这个有效。 - Andy Huang
这个有效。 - Andy Huang
在我的情况下,我必须执行以下操作:sudo ln -s /usr/local/opt/postgresql@14/lib/postgresql@14/libpq.5.dylib /usr/local/lib/libpq.5.dylib - Dmitry Petukhov

14

我按照S.D.的答案(链接)在M1芯片上进行了类似的操作。像Patryk Szczepański建议的那样,将链接指向/usr/local/lib/libpq.5.dylib对我来说不起作用,所以我创建了一个空的/opt/homebrew/opt/postgresql/lib并进行了符号链接。

mkdir /opt/homebrew/opt/postgresql
mkdir /opt/homebrew/opt/postgresql/lib
sudo ln -s /opt/homebrew/opt/postgresql@14/lib/postgresql@14/libpq.5.14.dylib /opt/homebrew/opt/postgresql/lib/libpq.5.dylib

macOS Monterey 12.5.1

苹果芯片 M1 Pro



你是真正的MVP! - Mahgol Fa
谢谢!我已经为此苦恼了一段时间! - bennygubear

14

这在我的MacOS Monterey上起作用了。

首先,我创建了它要查找的目录,然后创建了到现有文件的符号链接:

sudo mkdir -p /usr/local/opt/postgresql/lib/
sudo ln -s /usr/local/opt/postgresql@14/lib/postgresql@14/libpq.5.dylib /usr/local/opt/postgresql/lib/libpq.5.dylib

我也在Intel Mac(Monterey)上,这个方法有效:sudo ln -s /usr/local/opt/postgresql/lib/postgresql@14/libpq.5.14.dylib /usr/local/lib/libpq.dylib - anta40

8
我在配置Django的默认数据库为PostgreSQL时遇到了问题,我的电脑是苹果电脑。
通过pip安装psycopg2-binary后问题得以解决。
pip install psycopg2-binary

希望这对某个人有所帮助


8
sudo ln -s /opt/homebrew/opt/postgresql/lib/postgresql@14/libpq.5.dylib /opt/homebrew/opt/postgresql/lib/libpq.5.dylib

请解释一下你的答案为什么有效。 - Rohit Gupta
如果在创建/opt/homebrew/opt/postgresql/lib/libpq.5.dylib的符号链接时失败,请确保目录存在,方法是运行sudo mkdir -p /opt/homebrew/opt/postgresql/lib... 然后重试。 - Pierre Arnissolle

8

我在切换到PostgresApp并通过删除现有的PostgreSQL版本后遇到了这个问题。

brew remove postgres

我最终通过重新安装PostgreSQL解决了这个问题,具体操作如下:

brew install postgres

我能够通过在我的.bash_profile中添加以下内容来保留使用PostgresApp。
export PATH="/Applications/Postgres.app/Contents/MacOS/bin:/usr/local/bin:$PATH"

你也可以尝试运行以下命令:

brew doctor

由于提示我发现了一些额外的错误。

这个错误也影响了我的使用Paperclip gem,因为它导致ImageMagick出现相同的错误。

(使用OS X 10.8.2)


6

对我来说,以下方法有效:

ln -s /opt/homebrew/opt/postgresql/lib/postgresql@14/* /opt/homebrew/opt/postgresql/lib/

对我有用!我确实通过Homebrew和macOS Monterey安装了postgresql@14。 - Devy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接