psql:错误:连接到套接字“/tmp/.s.PGSQL.5432”上的服务器失败:没有这样的文件或目录

lea*_*oso 101 postgresql macos

不太确定是什么原因造成的,但很可能是在连接到 PostgreSQL 数据库的 Rails 服务器关闭时退出终端(我知道这不是一个好的做法,但吸取了教训!)

我已经尝试过以下操作:

  1. 重新启动我的机器(使用 MBA M1 2020)
  2. 使用自制程序重新启动 PostgreSQLbrew services restart postgresql
  3. 使用 Homebrew 重新安装 PostgreSQL
  4. 使用 Homebrew 更新 PostgreSQL
  5. 我也尝试点击此链接,但是当我运行cd Library/Application\ Support/Postgres终端时告诉我 Postgres 文件夹不存在,所以我已经迷路了。虽然我有一种感觉,删除 postmaster.pid 确实可以解决我的问题。任何帮助,将不胜感激!

lea*_*oso 71

如果您更喜欢使用 v13.3,下面是解决方法,如果您使用的是 14.2,您可以简单地更改 postgresql 正在侦听的端口。在这里阅读他们的相关文档。

请注意,此解决方案适用于我的设置(请查看原始帖子以了解我的设置详细信息,即操作系统以及我如何使用它来安装 Postgres)

  1. 打开以下目录中的 postgresql.conf 文件并使用您想要的任何文本编辑器。下面使用 vscode/vim。

VSCode

sudo code . /usr/local/var/postgres/postgresql.conf
Run Code Online (Sandbox Code Playgroud)

维姆

sudo vi /usr/local/var/postgres/postgresql.conf
Run Code Online (Sandbox Code Playgroud)
  1. 将端口更改为 5432 并重新启动计算机。

v13.3解决方案

看起来升级确实搞乱了我的 postgres,因为根据 Nagev 的回答,它正在监听端口 5433 而不是 5432。我降级到 v13.3 来解决这个问题。

brew uninstall postgresql
brew install postgresql@13
brew services start postgresql@13
brew link postgresql@13 --force
Run Code Online (Sandbox Code Playgroud)

  • 取消注释“port = 5432”行对我有用 (2认同)
  • 要检查端口是否不是 5432,您可以: `brew services info --all` -> 在输出中找到 postgres 的 PID -> 然后 `lsof -P -sTCP:LISTEN -i TCP -a -p <THE PID >`。这将为您提供输出,最后应指示端口,例如 `localhost:5433 (LISTEN)` (2认同)

小智 67

如果您使用的是 macOS 而不是 M1

rm /usr/local/var/postgres/postmaster.pid
brew services restart postgresql
Run Code Online (Sandbox Code Playgroud)

细节

  • 尝试brew info postgresql获取执行命令
  • 尝试/usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres
  • 错误:FATAL: lock file "postmaster.pid" already exists
  • 进入/usr/local/var/postgres目录,删除postmaster.pid文件
  • 重新启动,工作

  • 我在 macOS 上的正确答案 (6认同)

Kho*_*Ngo 58

蒙特利或索诺玛 MacOS M1/M2 的解决方案

rm /opt/homebrew/var/postgres/postmaster.pid
brew services restart postgresql
Run Code Online (Sandbox Code Playgroud)

  • brew services restart postgresql 上面的命令就是我所需要的。谢谢! (10认同)
  • 不适合我 (9认同)

Zak*_*kir 24

首先检查Postgress是否正在运行

pgrep -l postgres
Run Code Online (Sandbox Code Playgroud)

如果它没有给您任何结果,那么让我们尝试使用brew 服务启动它。

brew services start postgresql
pgrep -l postgres
Run Code Online (Sandbox Code Playgroud)

还不跑?检查日志

tail /usr/local/var/log/postgres.log
Run Code Online (Sandbox Code Playgroud)

您可能会看到有关名为 postmaster.pid 的文件的错误:

FATAL:  lock file "postmaster.pid" already exists
Run Code Online (Sandbox Code Playgroud)

这表明由于多种原因,Postgres 并未完全关闭。删除过时的 PID 锁,然后再次启动服务器

rm /usr/local/var/postgres/postmaster.pid
brew services start postgresql
pgrep -l postgres
Run Code Online (Sandbox Code Playgroud)

如果您通过 home-brew 安装 Postgress,则首先创建 postgres 用户。

/opt/homebrew/Cellar/postgresql@14/14.7/bin/createuser -s postgres
Run Code Online (Sandbox Code Playgroud)

现在您可以通过以下命令登录它:

psql -U postgres
Run Code Online (Sandbox Code Playgroud)


小智 18

如果您使用 MacOS Homebrew,请按照https://wiki.postgresql.org/wiki/Homebrew中的说明进行操作 简而言之,尝试 psql postgres


小智 14

对于配备 M1 的 Mac,请使用以下命令:

brew services stop postgresql
rm /opt/homebrew/var/postgresql@14/postmaster.pid
brew services start postgresql
Run Code Online (Sandbox Code Playgroud)


Urv*_*viG 6

在 Mac OSX M2上工作并postgresql@15使用安装brew

对我有用的安装步骤:

brew doctor
brew cleanup
brew update
brew install postgresql@15
Run Code Online (Sandbox Code Playgroud)

检查此命令日志中的安装路径 brew install postgresql@15,它可能看起来像/opt/homebrew/opt/postgresql@15/bin

添加到环境:

vim ~/.zshrc
Run Code Online (Sandbox Code Playgroud)

将此行附加到文件末尾

export PATH=$PATH:/opt/homebrew/opt/postgresql@15/bin
Run Code Online (Sandbox Code Playgroud)

检查此命令brew services start postgresql@15(显示已启动)并验证其状态,有时它会说它正在运行,但在下面的命令中,它会显示错误。

brew services list
Run Code Online (Sandbox Code Playgroud)

如果状态为运行

 Name          Status  User  File
postgresql@15 started username ~/Library/LaunchAgents/homebrew.mxcl.postgresql@15.plist

brew link postgresql@15 --force
cd /opt/homebrew/var/postgresql@15
sudo vi postgresql.conf 
Run Code Online (Sandbox Code Playgroud)

取消注释或添加postgresql.conf

port = 5432                             # (change requires restart)
Run Code Online (Sandbox Code Playgroud)

(来自:https ://stackoverflow.com/a/71792068/7276869 )

rm /usr/local/var/postgres/postmaster.pid
brew services restart postgresql
Run Code Online (Sandbox Code Playgroud)

尝试开始:

psql -d postgres -U username
postgres=# \l
Run Code Online (Sandbox Code Playgroud)

(您已进入 postgres shell!)


归档时间:

查看次数:

175709 次

最近记录:

2 年,4 月 前