0

我安装了 postgresql 和(我认为)pyscopg2。我想用 django 运行 postgresql。我尝试了命令“createdb mydb”,得到了如下所示的错误消息。我应该怎么办?

无法连接到数据库 postgres:

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

4

1 回答 1

1

您可以通过 2 种不同的方式连接到 PostgreSQL:

  1. Unix 套接字。它们是文件系统上的特殊文件,进程可以写入和读取。
  2. TCP 套接字,其主要目的是允许基于 Internet 协议的机器间通信,但它可以很好地用于连接同一台机器上的 2 个进程。

您收到的错误消息告诉您 Django 尝试了方法一,寻找代表 Unix 套接字的特殊文件,但没有成功。您的 PostgreSQL 实例很可能侦听 TCP 套接字而不是 Unix 套接字。要确认这一点,请尝试使用psql命令行客户端连接到 PostgreSQL,如下所示:

psql -h localhost -U user databse_name

如果成功,则可以通过HOST在文件中设置密钥来配置 Django 以通过 TCP 套接字连接到 localhost settings.py

DATABASES = {
    'default': {
     [...]
        'HOST': 'localhost',
     [...]
    }
}
于 2013-06-18T14:09:11.130 回答