关于rails上的ruby:无法在正确的路径上识别Postgresql

Postgresql fails to be recognised on the correct path

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

PG::Error

could not connect to server: Permission denied Is the server running
locally and accepting connections on Unix domain socket
"/var/pgsql_socket/.s.PGSQL.5432"?

我确定这与此处涉及的问题相同:

升级到OSX 10.7 Lion后修复Postgresql

但约翰王的修复不起作用。

我尝试将'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.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


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

1
/usr/LOCAL/bin/psql ...

如果它有用,那么它就是你需要改变的路径。您可以尝试在终端中运行导出,然后which psql。如果没有找到正确的psql,那么检查导出工作

1
echo $PATH

我不确定你需要更新哪个.xxrc文件 - 我不害怕,但至少你会知道命令会起作用。

哦 - 我保留了几个不同版本的PostgreSQL,并发现设置一些别名很有用:

1
2
3
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/local/bin/usr/local/bin之前。所以 - 我们需要做两件事:

  • 找出我们真正想要的psql
  • 确保我们可以编辑PATH
  • 首先 - 找到你的postgresql.conf文件并检查你正在运行的端口。有三个感兴趣的项目:listen_addressesportunix_socket_directory。然后我们会看看那里是否有插座。

    1
    ls -a <your unix_socket_directory>

    您应该看到类似".s.PGSQL.5432"的"文件",其中5432是配置文件中的端口号。如果没有这样的文件,它就没有运行,是时候让它运行了。如果配置文件中的端口号与Apple的现有用法匹配,则可能需要更改端口号。

    然后找到存在的psql安装

    1
    2
    find /usr -TYPE f -name psql
    find /opt -TYPE f -name psql

    尝试找出你需要的那个,或许添加--version来帮助。

    然后,让我们看看编辑你的PATH。无论如何,您必须在设置文件中进行一些更改,所以让我们看看我们是否可以找到该设置的位置。

    1
    grep -l 'local/bin' ~/.*rc

    这应该列出包含local / bin的文件名 - 看一看,看看他们是否正在编辑你的PATH。