我正在尝试使用postgresql设置一个新的应用程序,以便我可以使用Heroku进行部署。但是,当我使用'rails server'运行应用程序时,我对rails屏幕的欢迎会出现此错误:
PG ::错误
无法连接到服务器:权限被拒绝服务器是否正在运行 本地并接受Unix域套接字上的连接 “/var/pgsql_socket/.s.PGSQL.5432”?
我确定这与此处涉及的问题相同:
Repairing Postgresql after upgrading to OSX 10.7 Lion
但John Wang的修复不起作用。
我尝试将'export PATH = / usr / local / bin:$ PATH'添加到.bash_profile,.bashrc和.zshrc,其中没有一个会改变结果。调用哪个psql总是返回/ usr / bin / psql。
我在这里做错了什么?任何帮助将不胜感激!
修改
运行/ usr / local / bin / psql会出现同样的错误并且运行echo $ PATH会给出:
/opt/local/bin:/opt/local/sbin:/Users/dave/.rvm/gems/ruby-1.9.3-p194/bin:/Users/dave/.rvm/gems/ruby-1.9 0.3-P194 @全球/斌:/Users/dave/.rvm/rubies/ruby-1.9.3-p194/bin:/Users/dave/.rvm/bin:在/ usr / bin中:/ bin中:在/ usr / sbin目录:/ sbin目录:在/ usr / local / bin中:在/ usr / X11 / bin中:/Users/dave/.rvm/bin
答案 0 :(得分:2)
如果直接运行本地安装的psql会发生什么?
/usr/local/bin/psql ...
如果可行,那么这就是你需要改变的路径。您可以尝试在终端中运行导出,然后which psql
。如果没有选择正确的psql,请检查导出是否与
echo $PATH
我不确定你需要更新哪个.xxrc文件 - 我没害怕,但至少你知道命令会起作用。
哦 - 我保留了几个不同版本的PostgreSQL,并发现设置一些别名很有用:
alias psql90='/usr/local/pgsql90/bin/psql -p 5490'
alias psql84='/usr/local/pgsql84/bin/psql -p 5484'
alias pg_dump90=...
您的$PATH
只是一个要用“:”分隔的目录列表。它从/opt/local/bin
开始而不是/usr/local/bin
,如果你继续向前看,你会看到/usr/bin
出现在/usr/local/bin
之前。所以 - 我们需要做两件事:
首先 - 找到你的postgresql.conf文件并检查你正在运行的端口。有三个项目:listen_addresses
,port
和unix_socket_directory
。然后我们会看看那里是否有插座。
ls -a <your unix_socket_directory>
您应该看到类似“.s.PGSQL.5432”的“文件”,其中5432是配置文件中的端口号。如果没有这样的文件,它就没有运行,是时候让它运行了。如果匹配Apple的现有用法,您可能需要更改配置文件中的端口号。
然后找到存在的psql安装
find /usr -type f -name psql
find /opt -type f -name psql
尝试找出你需要的那个,或许添加--version来帮助。
然后,让我们看看编辑你的PATH。无论如何,您必须在设置文件中进行一些更改,所以让我们看看我们是否可以找到该设置的位置。
grep -l 'local/bin' ~/.*rc
应列出包含local / bin的文件名 - 查看是否正在编辑PATH。