Can't run psql command, keep getting the same

2019-01-30 09:20发布

问题:

I just installed posgresql with homebrew and when I go on to type the command

psql

I get the following error:

dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.2.dylib
Referenced from: /usr/local/bin/psql
Reason: image not found
[1]    69711 trace trap  psql

Does anyone have any idea about what's wrong?

回答1:

I was getting the exact same error, but the above answers didn't work for me. I had to reinstall postgresql.

brew reinstall postgresql



回答2:

The key problem is that your postgresql was trying to find the libreadline.6.2.dylib but your readline is version 7.0, so only 7's lib is linked.

I don't think upgrading postgresql is a good idea, it's not easy and may cause a lot of problem, especially when you already have database data.

What I do, is to switch the version of readline. When you check brew info readline, you will find different versions, mine is 6.3.8, so I switch to that version by executing:

$ brew switch readline 6.3.8

It will change to 6.3.8 and create the link:

Cleaning /usr/local/Cellar/readline/6.3.8
Cleaning /usr/local/Cellar/readline/7.0.1
Opt link created for /usr/local/Cellar/readline/6.3.8

In this case, all the linked lib becomes to 6 version, and command line works:

$ ls /usr/local/opt/readline/lib/
libhistory.6.2.dylib    libhistory.dylib    libreadline.a
libhistory.6.3.dylib    libreadline.6.2.dylib   libreadline.dylib
libhistory.6.dylib  libreadline.6.3.dylib
libhistory.a        libreadline.6.dylib

However, if you have different apps using different version of readline, I think you should consider upgrading.



回答3:

If the situation is you have a higher version readline say 7.0. You can do this

cd /usr/local/opt/readline/lib    
ln libreadline.7.0.dylib libreadline.6.2.dylib


回答4:

If you don't have readline installed, first install it:

brew install readline

For me, I was getting this error, even though I had readline installed. Reinstalling readline did the trick:

brew reinstall readline


回答5:

The solution is to force the linking of readline again.

brew remove readline
brew install readline
brew link readline --force


回答6:

this worked for me

ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.dylib


回答7:

This worked for me

brew switch readline

This would display the versions you have installed. Pick one out of them. I picked 7.0.5

I then ran

brew switch readline 7.0.5

The readline version got updated, and psql ran smoothly.



回答8:

None of those solutions worked for me; I had to run :

brew upgrade bash

from : https://github.com/Homebrew/homebrew-core/issues/5799



回答9:

The answer above didn't work for me so I wanted to post what did eventually work. Based on a thread I found here, I had to uninstall readline and the install it again but from source.

brew uninstall readline
brew install --build-from-source readline

After that the psql error went away.



回答10:

I had this issue, and the key for me was to reinstall both readline and postgres. Once postgres was reinstalled, the issue was resolved.



回答11:

I had this problem when I updated readline to version 7 by accident. I uninstalled readline and brew remind me 6.3.8 is still installed. It seems that version 7 is not working with PSQL at the moment.



回答12:

I tried all these terminal commands and nothing worked so decided to fix it manually..

Open finder and hit command+shift+g

Go to this folder /usr/local/opt/readline/lib/

you should see multiple versions of these files

libreadline.6.dylib
libreadline.7.0.dylib

rename any of them to whichever library is not loaded

this is: /usr/local/opt/readline/lib/libreadline.6.2.dylib
mine was: /usr/local/opt/readline/lib/libreadline.6.dylib


回答13:

This had helped me: uninstall all readline and postgresql

export CPPFLAGS=-I/usr/local/opt/readline/include export LDFLAGS=-L/usr/local/opt/readline/lib

and install posqtgresql



回答14:

Another way to fix psql is update postgresql just running brew upgrade postgresql since the newest version will use readline 7 version.



回答15:

I found this solution helpful

brew upgrade bash

https://github.com/Homebrew/homebrew-core/issues/5799



回答16:

I tried all the previews answers, and nothing worked. The only thing that really worked for me was:

brew link postgresql



回答17:

You could try brew doctor and see what it says.

Possibly all you need is brew link --overwrite bash.

For me, I just upgraded brew since OS X EL Capitan had some security upgrade that affetcs my /usr folder. During the brew upgrade, the bash link is broken, and this is what brew doctor tells me.

So I just run brew link --overwrite bash and everything's fine.



回答18:

You might want to check if you have anything else symlinked to postgresql. I had previously linked to the postgres93 package, which, as of May '17, is unsupported and has been removed. Removing that link and then relinking worked for me:

brew unlink postgresql93
brew link postgresql


回答19:

In my case the correct answer did not fix the problem.

The problem started after running brew doctor and adding export PATH="/usr/local/bin:$PATH" to my ~/.zshrc file.

Removing

export PATH="/usr/local/bin:$PATH" 

from ~/.zshrc got it solved.



回答20:

For some unknown reason, when this error popped up for the next version of Readline, my RVM seemed unable to locate the right one no matter how I symlinked it, throwing:

Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib (LoadError)

I ended up adding the gem rb-readline to my Gemfile and doing another bundle install and it started working.

I... just don't know.