14

由于将 OSX 升级到版本 10.7.3,当我尝试运行 Django“syncdb”命令时,我从 Postgresql 8.4.2 收到以下 psycopg2 错误:

psycopg2.OperationalError: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?

我能够毫无意外地打开 psql,但是当我尝试运行“pg_ctl status”时,我也收到了这个错误:

pg_ctl: could not open PID file "/Library/PostgreSQL/8.4/data/postmaster.pid": Permission denied

有相关性吗?

4

7 回答 7

33

我也遇到了同样的问题:将 osx 更新到 10.7.3,在我重新启动 postgres 服务器后,当我尝试$ ./manage.py dbshell通过 psycopg2 运行时遇到了同样的问题,但使用 psql 连接到 postgres 没有问题。

对我来说,这个问题似乎与“Unix 域套接字上的连接”有关,因为 psycopg2 使用新的 10.7.3 osx 更新的 postgres 库。

我试图重新安装 psycopg2,但没有任何改变。

因此,我更改了 django settings.py 的数据库部分的 HOST 值,而不是放一个空字符串'localhost'

它完美无缺!

于 2012-02-07T21:20:06.567 回答
8

Eelke 的问题和我的一样。最快的解决方法是添加

export PGHOST=/tmp

.bashrc/.zshrc/etc 文件中的环境变量(取决于您使用的)。

最好的解决方法是在您的应用程序配置文件中设置特定路径。

于 2012-02-16T22:04:48.880 回答
4

在我的 Mac 上做了一些测试,我注意到我的系统上有两个版本用于几个命令。一个版本在 /usr/bin 中,另一个在 /Library/PostgreSQL/9.0/bin 中。/usr/bin 中的版本需要 /var/pgsql_socket/.s.PGSQL.5432,我安装的正确版本需要 /tmp/.s.PGSQL.5432

/usr/bin 中的版本是 9.0.5,它已由 Apple 安装。

不幸的是,我对 django 了解不多,但我敢打赌,它要么是在错误的路径中调用命令,要么是从错误的位置加载库。

于 2012-02-05T08:29:59.503 回答
2

您可以通过创建符号链接来解决问题:

 ln -s /tmp/.s.PGSQL.5432 /var/pgsql_socket/
于 2012-02-27T16:08:45.283 回答
2

这最终对我有用......

将 settings.py 中数据库字典中的 HOST 值更改为:

'主机': '/tmp',

资料来源:http: //jeffammons.net/2011/09/fixing-postgres-on-mac-10-7-tiger-for-django

于 2012-04-04T23:36:25.990 回答
1

重新安装 psycopg2 对我有用

于 2012-10-23T04:06:05.833 回答
0

升级到 OSX 10.7.3 后,我遇到了同样的问题;重新安装 PostgreSQL 解决了这个问题,并没有删除我现有的数据。

于 2012-02-07T09:35:01.777 回答