0

我正在尝试使用 postgresql 设置一个新应用程序,以便可以使用 Heroku 进行部署。但是,当我使用“rails server”运行应用程序时,欢迎使用 rails 屏幕会出现此错误:

PG::错误

无法连接到服务器:权限被拒绝服务器是否在本地运行并接受 Unix 域套接字“/var/pgsql_socket/.s.PGSQL.5432”上的连接?

我确定这与此处讨论的问题相同:

升级到 OSX 10.7 Lion 后修复 Postgresql

但是John Wang的修复不起作用。

我尝试将 'export PATH=/usr/local/bin:$PATH' 添加到 .bash_profile、.bashrc 和 .zshrc,但这些都不会改变结果。调用 which 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.3- p194@global/bin:/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

4

1 回答 1

2

如果直接运行本地安装的 psql 会发生什么?

/usr/local/bin/psql ...

如果可行,那么这就是您需要更改的路径。您可以尝试在终端中运行导出,然后which psql. 如果那没有选择正确的 psql 然后检查导出是否使用

echo $PATH

我不确定您需要更新哪个 .xxrc 文件 - 恐怕手头没有 mac,但至少您会知道该命令会起作用。

哦 - 我保留了几个不同版本的 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。所以 - 我们需要做两件事:

  1. 找出我们真正想要的 psql
  2. 确保我们可以编辑我们的 PATH

首先 - 找到您的 postgresql.conf 文件并检查您正在运行的端口。有三个感兴趣的项目listen_addressesportunix_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。

于 2012-07-05T17:58:35.203 回答