我安装了postgresql和(我认为)pyscopg2。我想运行postgresql与django。我尝试了命令"createdb mydb",我得到了如下所示的错误消息。我该怎么办?
无法连接数据库:
could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
我正在运行mac osx 10.8.2.
当我输入ps auwwx|grep postg
时,我得到:
robbie 27589 0.0 0.0 2443176 1528 ?? Ss 7:25am 0:00.01 postgres: autovacuum launcher process
robbie 27588 0.0 0.0 2443044 552 ?? Ss 7:25am 0:00.01 postgres: wal writer process
robbie 27587 0.0 0.0 2443044 592 ?? Ss 7:25am 0:00.16 postgres: writer process
robbie 27586 0.0 0.0 2443044 612 ?? Ss 7:25am 0:00.00 postgres: checkpointer process
robbie 27584 0.0 0.1 2443044 3524 ?? S 7:25am 0:00.02 /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.log
robbie 27626 0.0 0.0 2423572 24 s000 S+ 7:36am 0:00.00 grep postg
robbie 27590 0.0 0.0 2439324 444 ?? Ss 7:25am 0:00.01 postgres: stats collector process
当我输入psql -V I
得到:psql (PostgreSQL) 9.1.4
当我输入which psql
时,我得到:/usr/bin/psql
你可以用两种不同的方式连接到PostgreSQL:
- Unix socket。它们是文件系统中进程可以写入和读取的特殊文件。
- TCP套接字,其主要目的是允许在Internet协议之上的机器间通信,但它可以很好地用于连接同一机器上的两个进程。
你得到的错误信息告诉你Django尝试了方法一,寻找一个代表Unix套接字的特殊文件,但是没有成功。你的PostgreSQL实例很可能监听TCP套接字而不是Unix套接字。为了确认这一点,尝试使用psql
命令行客户端连接到PostgreSQL,如下所示:
psql -h localhost -U user databse_name
如果你成功了,那么你可以通过在你的settings.py
文件中设置HOST
密钥来配置Django通过TCP套接字连接到本地主机:
DATABASES = {
'default': {
[...]
'HOST': 'localhost',
[...]
}
}