运行Django的syncdb时,OSX 10.7.3上的Postgresql套接字错误

时间:2012-02-03 18:48:16

标签: django postgresql psycopg2 syncdb

由于将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

有相关性吗?

7 个答案:

答案 0 :(得分:33)

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

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

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

所以,我更改了django settings.py的数据库部分的HOST值,而不是使用空字符串我放'localhost'

它完美无缺!

答案 1 :(得分:8)

艾尔克的问题跟我的一样。 对此最快的解决方法是添加

export PGHOST=/tmp

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

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

答案 2 :(得分: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知之甚少,但我的赌注是要么在错误的路径中调用命令,要么从错误的位置加载库。

答案 3 :(得分:2)

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

 ln -s /tmp/.s.PGSQL.5432 /var/pgsql_socket/

答案 4 :(得分:2)

这最终给了我诀窍......

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

'主持人':'/ tmp',

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

答案 5 :(得分:1)

重新安装psycopg2对我有用

答案 6 :(得分:0)

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