我输入了psql,我得到了这个:

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

我用sudo netstat -nlp | grep 5432来查看状态,但什么都没显示.

推荐答案

该错误表示psql实用程序找不到连接到数据库服务器的套接字.要么您没有在后台运行数据库服务,要么套接字位于其他位置,或者可能需要修复pg_hba.conf.

步骤1:验证数据库是否正在运行

该命令可能因操作系统而异.但在大多数*ix系统上,以下功能可以工作,它将在所有运行的进程中搜索Postgre

ps -ef | grep postgres

在我的mac osx系统上,这个

501   408     1   0  2Jul15 ??         0:21.63 /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.log

最后一列显示用于启动服务器的命令和选项.

您可以使用以下选项查看启动postgres服务器的所有可用选项.

man postgres

从这里,你会看到选项-D-r分别是datadir-rlogfilename.

第2步:如果postgres服务正在运行

使用find搜索插座的位置,它应该位于/tmp中的某个位置

sudo find /tmp/ -name .s.PGSQL.5432

如果postgres正在运行并接受套接字连接,上面应该会告诉您套接字的位置.在我的机器上,结果是:

/tmp/.s.PGSQL.5432

然后,try 显式使用该文件的位置通过psql连接,例如.

psql -h /tmp/ dbname

步骤3:如果服务正在运行,但您没有看到套接字

如果找不到套接字,但看到服务正在运行,请验证pg_hba.conf文件允许本地套接字.

浏览到datadir,你会找到pg_hba.conf文件.

默认情况下,在文件底部附近,您应该看到以下几行:

# "local" is for Unix domain socket connections only
local       all       all       trust

如果看不到,可以修改文件,然后重新启动postgres服务.

Postgresql相关问答推荐

Trunc函数不删除小数

从子查询中的排序结果中获取前X行

在输入稍有错误的PostgreSQL表中进行快速字符串搜索

ANTLR4 PostgreSQL语法被 destruct 了吗?

自左联接的POSTGIS更新

我应该如何更新热门表?

需要用 jack/pgx 更新 golang 中复合类型的 PSQL 行

PostgreSql maintenance_work_mem 在索引创建期间增加

在 SQL 上返回负值

PostgreSQL:如何避免被零除?

PostgreSQL 查询到 Excel 表

使用 ON CONFLICT 从 INSERT 返回行,无需更新

遇到序列化失败的条件是什么?

PostgreSQL 提示:You will need to rewrite or cast the expression. column "state" is of type status but expression is of type character varying

SQL数据库表中的多态性?

Rails PG::UndefinedTable:错误:missing FROM-clause entry for table

查询 JSON 列中的数组元素

使用 Postgresql 在过滤器中制作 Sqlalchemy 使用日期

实时监控 PostgreSQL 查询的应用程序?

postgresql DB中唯一键的正确数据类型是什么?