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

时间:2012-08-19 16:21:34

标签: macos postgresql

我正在使用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时仍然会遇到相同的错误。

25 个答案:

答案 0 :(得分:37)

如果您在macOS计算机上运行服务器并通过Homebrew安装Postgres,则可以像这样停止当前实例:

  

brew服务停止postgresql

然后单击屏幕顶部本机菜单栏中的Elephant,它应该会成功启动。

答案 1 :(得分:22)

我只是遇到了这个问题。当我运行which psql时,它指向安装了Lion的Postgres客户端工具:

/usr/bin/psql

使用Frank Wiles中的提示我运行ps auxw | grep post确认postgres正在运行并且它正在正确的端口上运行,这也向我展示了postgres.app路径:

/Applications/Postgres.app/Contents/MacOS/bin/postgres

所以我编辑.bash_profile来导出该目录。在第一次努力时,我将它添加到路径的末尾。当我运行echo $PATH时,我发现usr / bin是路径中的第一件事,which psql仍然提供了/usr/bin路径。那时,一位朋友指导我正确的方向:

export PATH="/Applications/Postgres.app/Contents/MacOS/bin:${PATH}"

启动一个新的终端窗口,然后运行which psql - 它应该指向postgres.app位置,psql应该启动postgres shell。现在工作正常。

答案 2 :(得分:19)

您可以通过

查找PID来停止该过程
lsof -i :5432

然后用

杀死它
kill -9 <PID>

答案 3 :(得分:16)

我已经尝试了解决这个问题的每个解决方案。对我来说,即使计算机已经在睡觉,我的MacBook电池也会死机。我在~/Library/Application\ Support/Postgres/var-9.4中闲逛,发现了另一个我以前没见过的postmaster.pid文件。我删除了它,现在一切都恢复正常!我正在运行Postgres.app版本,而不是brew版本。

我采取的步骤:

  1. 确保postgres.app未运行。
  2. 运行rm ~/Library/Application\ Support/Postgres/var-9.$X/postmaster.pid
  3. 如果您没有var-9.$X目录,只需运行rm ~/Library/Application\ Support/Postgres/postmaster.pid
  4. 重新启动postgres.app
  5. 回到开发很酷的东西。

答案 4 :(得分:15)

如果您通过其他方法(例如,来自www.postgresql.org)安装了Postgres并且它在启动时自动启动,则可以通过以下方式阻止Postgres启动:

sudo launchctl unload /Library/LaunchDaemons/com.edb.launchd.postgresql-X.X.plist  
sudo rm -f /Library/LaunchDaemons/com.edb.launchd.postgresql-X.X.plist  

提示:在com.edu.launchd部分后使用标签自动填充,以确定要加载的版本。

重启Postgres.app,你应该好好去。

(来自http://forums.enterprisedb.com/posts/list/1831.page;jsessionid=70621DC48C99EDE663A6A594B05F1A02#6782

答案 5 :(得分:13)

我有另一个postgres运行实例,这是唯一对此端口感兴趣的应用程序。您应该使用netstat和ps来确定这一点。然后停止实例并卸载它,你可能已经安装了enterpiseDb,这就是我所做的。

答案 6 :(得分:5)

我有一个类似的问题,我无法连接到Postgres.app,即使应用程序本身说它正在端口5432上运行。

我不知道为什么,但即使我退出应用程序并检查没有运行ps -a的postgres进程。这些文件存在:

/tmp/.s.PGSQL.5432

/tmp/.s.PGSQL.5432.lock

我的解决方案是删除这些文件,然后再次启动postgres.app。

答案 7 :(得分:5)

也可能发生PID。 当计算机意外重启时,这就发生了。

如果是这样,你必须去:

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

您可以在Postgres.app首选项对话框中检查该路径。

然后,只需删除pid文件

sudo rm postmaster.pid

服务器立即启动。

答案 8 :(得分:4)

这对我有用: $ sudo pkill -u postgres

此资源的道具: https://github.com/PostgresApp/PostgresApp/issues/197#issuecomment-474534056

答案 9 :(得分:3)

此命令是一种单行代码,可立即终止所有PostgresSQL进程。

$('.btn').on('click', function (){
  setTimeout(function(){ 
    $('.may').click();
  }, 3000);
});

这解决了我在Mac OSX Mojave 10.14.1上遇到的所有问题。

答案 10 :(得分:3)

我通常会在Mac上遇到此问题,并且此问题总是会为我解决

rm /usr/local/var/postgres/postmaster.pid
brew services restart postgresql

希望这会有所帮助

答案 11 :(得分:3)

当试图打开Postgres应用程序时,获得了与5432相同的错误(在Mac OSX 10.10.5上)

我做了:

$ lsof -i | grep LISTEN

看到哪个PID在该端口运行postgres,做了: $ killall {pid}然后$ brew uninstall postgres

之后,重新启动我的Mac,并运行:

$ lsof -i | grep LISTEN再一次只是为了确保。看到没有postgres在任何地方运行,并能够打开Postgres应用程序而不会收到该警告。

然后我用$ brew install postgres

重新安装了postgres

另一个选项

(当上述方法无法正常工作且我无法杀死任何PID时,我也尝试了一次

$ ps auxw | grep post

看了一个postgres postgres进程,然后我sudo kill <PID>

现在一切正常。

答案 12 :(得分:2)

猜测,还有其他东西占据了端口5432,所以应用程序选择在5433上运行。

为什么不直接连接到端口5433上的Pg,如果它正在运行的地方?您有一个/tmp/.s.PGSQL.5432套接字文件,因此您可以使用psql -p 5433连接UNIX域套接字连接。它还将使用TCP / IP侦听同一端口,因此您可以使用psql -h localhost -p 5433进行TCP / IP,并将应用程序连接到端口5433而不是5432.

更改您的.psqlrc以将新端口设置为默认端口,您可以忘记它不在默认端口上。

答案 13 :(得分: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后,它工作正常。

祝你好运!

答案 14 :(得分:1)

除了所有有用的答案外,您可能还想看看官方页面说明: postgressapp.com/documentation/remove.html

答案 15 :(得分:1)

Netstat,ps aux等...没有显示5432在使用中。已检查/库。发现PG9.6旧安装仍然存在。 rm -rf和bang吗?版本11可以正常工作。

答案 16 :(得分:1)

我对这个问题失去了理智!我一直在跑

<块引用>

lsof -i | grep 5432

什么都没有出现! 最后我使用 sudo 运行它,一个potgres客户端出现了。 因此,如果其他人尝试过 lsof 并且无处可去,请尝试使用 sudo。

<块引用>

sudo lsof -i | grep 5432

然后

<块引用>

sudo kill

答案 17 :(得分:1)

尝试使用带有rails的postgresql时遇到了类似的问题。更新我的Gemfile以使用新版本的gem pg为我解决了这个问题。 (gem pg version 0.16.0有效)。在Gemfile中使用:

gem 'pg', '0.16.0'

然后运行以下内容来更新gem

bundle install --without production
bundle update
bundle install

答案 18 :(得分:1)

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

答案 19 :(得分:1)

我通过

解决了这个问题
  1. 使用CL中的“netstat”识别端口5432上运行的内容,这是postgreSQL而不是Postgres
  2. 我找到了包含postgreSQL的目录,它是root / Library / PostgreSQL
  3. 我确保应用程序的瞬间没有通过Activity Monitor
  4. 运行
  5. 然后我删除了文件夹并重启了!一切都很好!

答案 20 :(得分:0)

我遇到了同样的问题:

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

在我的情况下,它是我的Mac上的一个损坏的主机文件。我失踪了:

127.0.0.1   localhost

快速简便的方法是打开终端并输入:

ping localhost

或:

scutil -r localhost

更多信息here 希望它有所帮助。

答案 21 :(得分:0)

名为&#34; postmaster.pid&#34;的文件(在我的$ PGDATA目录中)阻止postgresql启动。它是一个僵尸文件,放在那里10天前,当我残酷地关闭计算机(从字面上拔插头)时,没有清理过程有机会删除该文件。

答案 22 :(得分:0)

您很可能安装了PostgreSQL,将其删除并重新安装。 PostgreSQL通常使用端口5432,但如果不可用,则增加到下一个可用的端口,在本例中为5433.因此,您可能在第二次安装时选择了此端口。

我认为你应该检查文件:

/ etc / services

并根据预期的端口号调整下面的行:

postgresql 5432 / udp #PostgreSQL数据库

postgresql 5432 / tcp #PostgreSQL数据库

在此之后,您应该重新启动计算机(最简单的方法)。

答案 23 :(得分:0)

同样的问题刚好发生在我身上。我有一段时间运行Postgres.app 9.2.4.1。当我将Mac OS X更新到10.8.5时,在强制重启后它再也无法正常工作了。我尝试了几件事,包括更新到9.2.4.3,并且在重新启动后它都没有工作。

我必须打开文件/Users/$USER/Library/Application Support/Postgres/var/postgresql.conf并打开:

  1. 取消注释行unix_socket_permissions = 0777
  2. 取消注释并调整第unix_socket_directory = '/tmp'
  3. 重新启动后,Postgres.app就像魅力一样运行。

答案 24 :(得分:0)

我遇到了同样的问题,而我的问题是由我遇到的一些配置问题引起的。清除用户配置并在brew中重新安装postgres对我有用!

Task