由于将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
有相关性吗?
答案 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解决了这个问题,并没有删除我现有的数据。