重新启动我的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。


当前回答

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

其他回答

以上这些方法对我都没用。我必须以以下方式重新安装Postgres:

使用brew卸载postgresql 酿造医生(修复这里的任何东西) 啤酒清理 删除所有Postgres文件夹: Rm -r /usr/local/var/postgres rm -r ~/库/应用\支持/Postgres . txt 使用brew重新安装postgresql 启动服务器:brew服务启动postgresql 你现在必须创建你的数据库…(createdb)

我也犯过类似的错误。

所有这些都是从命令行完成的(根本没有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,有一个服务器,我可以启动和停止,并有能力连接到/断开,该服务器。

我从LD_LIBRARY_PATH中删除了/usr/lib,它工作了。 我在dockerfile postgres:alpine中工作。

当我试图在MacOS Monterey上连接启动PostgreSQL数据库服务器时,我也有同样的担忧。

当我运行以下命令重新启动PostgreSQL数据库服务器时:

brew services restart PostgreSQL

它重新启动,但当我尝试使用下面的命令检查PostgreSQL数据库服务器的状态时,我得到一个错误:

Name       Status     User           File
mysql      started    promisepreston ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
nginx      started    promisepreston ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
postgresql error  256 root           ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

以下是对我有效的方法:

首先,我检查了PostgreSQL数据库服务器的日志文件,使用下面的命令查看错误的原因:

cat /usr/local/var/log/postgres.log

OR

nano /usr/local/var/log/postgres.log 

日志显示以下错误:

"root" execution of the PostgreSQL server is not permitted.
The server must be started under an unprivileged user ID to prevent
possible system security compromise.  See the documentation for
more information on how to properly start the server.
2022-01-25 19:01:06.051 WAT [29053] FATAL:  database files are incompatible with server
2022-01-25 19:01:06.051 WAT [29053] DETAIL:  The data directory was initialized by PostgreSQL version 13, which is not compatible with this version 14.1.

对于根执行错误,我必须运行以下命令来修复文件权限,当我用sudo命令前缀运行brew服务时,文件权限被打乱了。将你的用户名替换为你的MacOS用户名(在我的例子中,我的用户名是promisepreston:

# Stop postgresql
sudo brew services stop PostgreSQL

# In case service file is copied to ~/Library/LaunchAgents as well
brew services stop postgresql

# Fix permission of homebrew files
sudo chown -R your-username:admin $(brew --prefix)/*

由于数据库文件与服务器不兼容,我不得不简单地将现有的PostgreSQL数据文件(使用版本13创建的)升级到我计算机上的最新PostgreSQL版本(14.1),通过运行以下命令:

brew postgresql-upgrade-database

之后,我重启了PostgreSQL数据库服务器:

brew services restart PostgreSQL

然后使用下面的命令检查状态:

brew services list

然后我得到了下面的输出,显示一切正常工作:

Name          Status  User           File
mysql         started promisepreston ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
nginx         started promisepreston ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
postgresql    started promisepreston ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

参考:Brew PostgreSQL启动,但进程未运行

如果你是邮政局长。Pid已经消失,你不能重新启动或做任何事情,这样做:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

正如这里最初解释的那样