重新启动我的Mac,我得到了可怕的Postgres错误:

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"?

发生这种情况的原因是由于一个无关的问题,我的macbook完全死机了,我不得不使用电源按钮进行硬重启。重启后,由于这个错误,我无法启动Postgres。


当前回答

如果你在macOS上,并通过homebrew安装了postgres,请尝试重新启动

brew services restart postgresql

如果你使用的是Ubuntu,你可以用这两个命令中的任意一个重新启动它

sudo service postgresql restart

sudo /etc/init.d/postgresql restart

其他回答

我刚刚得到了相同的问题,因为我已经把我的机器(ubuntu)更新,并得到以下错误:

无法连接到服务器:没有这样的文件或目录是服务器吗 在Unix域套接字上本地运行并接受连接 “/ var /运行/ postgresql / .s.PGSQL.5432”?

完成更新过程后,当我重新启动系统时,我的错误消失了。它的工作就像以前一样迷人。我猜这是在pg更新和另一个进程启动时发生的。

警告:如果您删除postmaster。Pid,而不确定是否真的有postgres进程在运行你,可能会永久破坏你的数据库。(PostgreSQL应该自动删除它,如果postmaster已经退出。)

解决方案:这解决了问题——我删除了这个文件,然后一切工作!

/usr/local/var/postgres/postmaster.pid

--

这就是我是如何发现为什么这个需要删除的。

我使用以下命令查看是否有任何PG进程正在运行。对我来说,没有,我甚至无法启动PG服务器: Ps auxw | grep post 我搜索了. s.p gsql文件。5432在上面的错误消息中。我使用了以下命令: sudo find / -name . s.p gsql。5432 - ls

在搜索了我的整个计算机后,这没有显示任何东西,所以文件不存在,但显然PSQL“想要它”或“认为它在那里”。

我看了一下我的服务器日志,看到了以下错误: 猫/usr/local/var/postgres/server.log

在服务器日志的末尾,我看到以下错误:

    FATAL:  pre-existing shared memory block (key 5432001, ID 65538) is still in use
    HINT:  If you're sure there are no old server processes still running, remove the shared memory block or just delete the file "postmaster.pid".

按照错误消息中的建议,我删除了邮政局长。Pid文件与server.log在同一目录下。这解决了问题,我可以重新启动。

所以,似乎我的macbook被冻结和硬重启导致Postgres认为它的进程在重启后仍在运行。删除此文件已解决。很多人都有类似的问题,但大多数答案都与文件权限有关,而我的情况则不同。

@Jagdish Barabari的回答给了我解决这个问题的线索。结果是安装了两个版本的postgresql,而只有一个在运行。清除所有postgresql文件并重新安装最新版本为我解决了这个问题。

如果你在macOS上,并通过homebrew安装了postgres,请尝试重新启动

brew services restart postgresql

如果你使用的是Ubuntu,你可以用这两个命令中的任意一个重新启动它

sudo service postgresql restart

sudo /etc/init.d/postgresql restart

我也犯过类似的错误。

所有这些都是从命令行完成的(根本没有sudo调用)

我验证我已经安装了PostgreSQL psql -V(注意这是一个大写的“V”) 我试图连接到服务器:psql postgres

这就是我在堆栈溢出问题中遇到错误的地方

在做了一些关于可能的修复的研究之后,我显然安装了PostgreSQL,但我没有一个默认的服务器。

我要做的是创建一个自定义数据目录

据我所知,创建自定义数据目录与设置默认服务器是一样的。

由于这是一台新机器(使用apple m1芯片的MacBook Pro 2021),我想找到最简单的解决方案,我相信这个自定义数据目录就是这样。修复此问题的其余步骤如下:

在主目录中,我创建了一个空目录mkdir myData 从主目录,初始化一个服务器:initdb myData(将一堆文件扔到myData目录) pg_ctl -D myData -l logfile start(启动服务器) PSQL postgres(连接到服务器)

所以,作为一个刚刚接触PostgreSQL和数据库以及SQL的人,有几点注意事项:

使用\q可以“退出”到服务器的连接(当连接到服务器时,也可以输入“帮助”) 也可以用pg_ctl -D myData stop来“停止”服务器

在这一点上,我现在确定我已经安装了PostgreSQL,有一个服务器,我可以启动和停止,并有能力连接到/断开,该服务器。