Postgres.app 无法在端口5432上启动。

74

我正在使用http://postgresapp.com。在菜单栏中,它显示错误消息" 无法在5432端口启动。"如果我尝试从终端启动服务器,我也会得到相同的错误信息:

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

我也运行了pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start,并且得到了输出server starting,但是在连接psql时仍然遇到相同的错误。


1
我的第一个猜测是你的Mac上有其他东西占用了5432端口。默认情况下,psql不会使用该端口,而是使用套接字文件(/tmp/.s.PGSQL.5432),就像你提到的那样。你可以通过 psql -h localhost 强制使用该端口。尝试检查一些事情:1. 是否有其他东西正在使用5432端口。2. 检查你的postgres(操作系统)用户是否有权限在 /tmp/ 中创建文件。 - Philip Couling
1
我在 /tmp/ 目录下看到了一个 .s.PSQL.5433 的东西。我该如何将它更改为 5432? - Chris
1
我遇到了同样的问题。我认为这与苹果的专业应用程序更新有关,因为那是我所做的唯一更改,然后我开始收到这个错误。我尝试过卸载和重新安装postgresql;卸载和重新安装pg gem;以及其他一些配置调整,但没有结果。仍在努力解决,但希望很快能找到解决方案。如果我取得任何进展,我会让你知道的。 - Brian McDonough
1
在我的情况下,我正在运行连接到我的postgresql实例的dBeaver。 我进行了配置更改,然后点击“停止”和“启动”,但是惊讶地得到了“端口正在使用”的错误。 但是下面建议的“lsof -i:5432”显示dBeaver占用了该端口。 关闭dBeaver后,postgresql可以正常启动。 - Eric Hill
28个回答

5

可能会出现PID丢失的情况。当计算机遭受意外重新启动时,这种情况发生在我身上。

如果是这样,您必须前往:

˜/Library/Application Support/Postgres/var-9.4

您可以在Postgres.app的偏好设置对话框中检查该路径。

然后,只需删除pid文件即可。

sudo rm postmaster.pid

服务器立即启动。


该文件夹中没有这样的文件。我正在使用PostGres 9.6,找不到以该扩展名结尾的任何文件。 - zulkarnain shah
那么你的pid没有被占用,而是发生了其他事情。 - Lomefin

4
尝试打开 Postgres 应用时,我遇到了关于端口 5432 的错误(在 Mac OSX 10.10.5 上)。
我的做法是:
$ lsof -i | grep LISTEN

我看到该端口运行的postgres进程的PID,执行了以下命令:$ killall {pid} 然后 $ brew uninstall postgres

之后,重新启动我的Mac,并再次运行:$ lsof -i | grep LISTEN 以确保没有任何地方运行postgres,并且能够打开Postgres应用程序而不出现警告。

然后,我使用$ brew install postgres重新安装了postgres。

另一种选择:

(当上述方法无效且我无法杀死任何PID时,我也尝试过这种方法)

$ ps auxw | grep post

我看到了许多postgres进程,然后我使用sudo kill <PID>命令结束了它们。
现在一切都正常运行。

你为什么想要通过Homebrew和Postgres.app安装PostgreSQL? - acidjunk

3

对于使用 Mac 的用户,这段代码对我非常有效。

sudo pkill -u postgres

2

当我尝试在Rails中使用PostgreSQL时,遇到了类似的问题。将我的Gemfile更新为使用新版本的pg gem解决了这个问题(gem pg版本0.16.0可行)。在Gemfile中使用:

gem 'pg', '0.16.0'

那么运行以下命令来更新宝石(gem)。
bundle install --without production
bundle update
bundle install

2
猜测是因为其他应用程序占用了5432端口,所以该应用程序选择在5433端口上运行。如果它确实在5433端口上运行,为什么不直接连接到5433端口的Pg呢?你有一个/tmp/.s.PGSQL.5432套接字文件,因此可以使用psql -p 5433进行UNIX域套接字连接。它也将通过TCP/IP监听相同的端口,因此您可以使用psql -h localhost -p 5433进行TCP/IP连接,并使您的应用程序连接到5433端口而不是5432端口。将您的.psqlrc更改为设置新端口为默认端口,然后您就可以忘记它不在默认端口上了。

每个选项都值得探索,但这对我没有起作用。我计划重新安装操作系统,因为我无法解决问题。 - Brian McDonough

1
我的电脑突然无法启动,当我检查 Console.app 时看到了以下信息:
com.heroku.postgres-service: 
FATAL:  could not create shared memory segment: Cannot allocate memory
DETAIL:  Failed system call was shmget(key=5432001, size=3874816, 03600).
HINT:  This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory or swap space, or exceeded your kernel's SHMALL parameter.  You can either reduce the request size or reconfigure the kernel with larger SHMALL.  To reduce the request size (currently 3874816 bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.
The PostgreSQL documentation contains more information about shared memory configuration.

原来Postgres无法启动是因为我同时运行了Wireshark(和X11)。在我退出Wireshark后,它就正常工作了。
祝好运!

当我同时运行X11时,我的postgres.app启动失败了,关闭X11并重新启动应用程序即可解决问题。这是一个神秘的问题。 - Pathogen

1

Netstat、ps aux等等...都没有显示5432端口正在使用。检查了/Library文件夹,发现仍然有PG9.6旧版本安装。使用rm -rf命令删除后,问题得以解决。版本11运行良好。


1

我遇到了同样的问题:

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

在我的情况下,这是我 Mac 上一个损坏的主机文件。 我缺少:

127.0.0.1   localhost

检查的一种快速简单的方法是打开终端并键入:

ping localhost

或:

scutil -r localhost

更多信息 在这里 希望对您有所帮助。


1

不知何故,我完全忘记了这个套接字文件会因为点而被隐藏。如果您想要检查套接字是否存在,请确保使用 ls -A /tmp/.s.PGSQL.5432


1
我通过以下步骤解决了这个问题:
  1. 使用CL中的"netstat"识别运行在端口5432上的内容,发现是postgreSQL而不是Postgres
  2. 找到包含postgreSQL的目录,即root/Library/PostgreSQL
  3. 通过活动监视器确保没有应用程序正在运行
  4. 然后删除文件夹并重新启动!一切都好了!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接