6

我正在尝试为我的 mac(10.7 Lion)上的 rails 应用程序在本地设置 postgres。

我安装了postgresapp并启动​​了它,现在我的状态栏中有一头大象告诉我 postgres 正在运行。

我可以通过以下方式得到它:

psql -h localhost

但是当我简单地运行时,psql我得到了这个错误:

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

我把这个:

PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"

~/.bashrc并打开了一个新的终端。但没有骰子。

当我跑步时,which psql我得到/usr/bin/psql

不太确定该怎么做..我对unix系统还是很陌生。我应该符号链接/usr/bin/psql/Applications/Postgres.app/Contents/MacOS/bin/psql吗?

4

2 回答 2

11

我在运行 Mountain Lion 的新 MacBook Pro 上遇到了类似的问题。我下载了PostgresApp,当我启动 rails 时,我收到以下错误:

`initialize': could not connect to server: No such file or directory (PG::Error)
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?

为了解决这个问题,我必须在我的database.yml文件中明确定义主机和端口,如下所示:

development:
  adapter: postgresql
  encoding: unicode
  database: my_app_development
  pool: 5
  username: tony
  password: stark    
  host: localhost
  port: 5432
于 2012-09-19T01:09:19.970 回答
3

这个错误非常具体,可以告诉您出了什么问题,但是如果您是 unix 新手,那么它就不那么明显了。

我在这里给出了类似的答案:

无法连接到本地 PostgreSQL

问题

您无权访问(“socket”)文件/var/pgsql_socket/.s.PGSQL.5432

修理:

检查您是否至少有权访问该目录。在命令行使用:

ls -l /var/pgsql_socket/.s.PGSQL.5432

如果没有,这将导致“权限被拒绝”。您可能已经有权访问它,而这只是您无权访问的套接字文件。

套接字文件本身是由 postgresql 在启动时创建的。

跟踪 postgres ( postgresql.conf) 的主要配置文件。这本身可能很困难,我是 linux 用户而不是 OSX。您可能需要花一些时间在 google 上。这个链接已经很老了,但如果您遇到问题,它可能会让您走上正轨。http://www.postgresqlformac.com/server/howto_edit_postgresql_confi.html

找到它后,在 postgresql.conf 中找到它们应该这样说的行:

unix_socket_directory = '/var/pgsql_socket'    # dont worry if yours is different
#unix_socket_group = ''                        # default is fine here
unix_socket_permissions = 0777                 # check this one
于 2012-08-18T12:25:23.303 回答