65

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

4

25 回答 25

77

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

酿造服务停止 postgresql

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

于 2016-10-18T05:01:36.530 回答
64

您可以通过查找 PID 来停止该过程

lsof -i :5432

然后用

kill -9 <PID>
于 2017-05-06T21:43:54.407 回答
29

如果您通过其他方法(例如,从 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.edb.launchd部件后使用选项卡自动完成以找出正在加载的版本。

重新启动 Postgres.app,你应该一切顺利。

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

于 2013-11-15T20:30:55.757 回答
24

我只是有这个确切的问题。当我运行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。现在工作正常。

于 2012-12-12T20:08:07.893 回答
17

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

于 2012-10-18T01:49:44.403 回答
17

我已经尝试了几乎所有解决这个问题的方法。对我来说,它总是在我的 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. 回去开发很酷的东西。
于 2015-03-07T16:51:39.577 回答
16

这个命令是一个单行命令,可以立即杀死所有 PostgresSQL 进程。

sudo kill -kill $(sudo lsof -t -i :5432)

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

于 2018-12-18T01:03:39.217 回答
8

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

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

/tmp/.s.PGSQL.5432

/tmp/.s.PGSQL.5432.lock

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

于 2013-10-28T07:44:49.833 回答
8

我通常在我的 Mac 上遇到这个问题,这总是为我解决这个问题

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

希望这会有所帮助

于 2020-05-26T11:07:40.290 回答
5

PID 也可能被占用。当计算机意外重新启动时,这发生在我身上。

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

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

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

然后,只需删除 pid 文件

sudo rm postmaster.pid

服务器立即启动。

于 2016-04-11T20:17:41.210 回答
5

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

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

于 2020-12-26T05:35:26.523 回答
4

当尝试打开 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 应用程序。

然后我重新安装了postgres$ brew install postgres

另一种选择

(当上述方法不起作用并且我无法杀死任何PID时,我也尝试过一次)

$ ps auxw | grep post

看到了很多 postgres 进程,然后我sudo kill <PID>

现在一切正常。

于 2015-10-28T06:35:57.753 回答
2

猜测是,其他东西占用了端口 5432,因此应用程序选择在 5433 上运行。

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

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

于 2012-08-20T02:07:56.010 回答
2

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

gem 'pg', '0.16.0'

然后运行以下命令来更新 gem

bundle install --without production
bundle update
bundle install
于 2013-08-16T14:45:03.517 回答
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 后它运行良好。

祝你好运!

于 2012-10-10T02:28:52.133 回答
1

我解决了这个问题

  1. 通过在 CL 中使用“netstat”来识别端口 5432 上运行的内容,这是 postgreSQL 而不是 Postgres
  2. 我找到了包含 postgreSQL 的目录,即 root/Library/PostgreSQL
  3. 我确保应用程序的瞬间没有通过活动监视器运行
  4. 然后我删除了文件夹并重新启动!一切都很好!
于 2013-07-09T12:54:39.943 回答
1

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

于 2013-08-10T21:15:08.460 回答
1

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

我认为你应该检查文件:

/etc/服务

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

postgresql 5432/udp #PostgreSQL 数据库

postgresql 5432/tcp #PostgreSQL 数据库

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

于 2014-02-26T09:52:02.163 回答
1

我有同样的问题:

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

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

127.0.0.1 本地主机

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

ping 本地主机

或者:

scutil -r 本地主机

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

于 2014-11-22T03:43:00.123 回答
1

Netstat、ps aux 等...没有显示 5432 正在使用中。检查/图书馆。发现 PG9.6 旧安装仍然存在。rm -rf 并砰的一声。版本 11 工作正常。

于 2018-11-19T12:57:21.900 回答
1

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

lsof -i | grep 5432

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

须藤 lsof -i | grep 5432

进而

sudo kill <the_pid_from_postgresql_found_from_lsof>

于 2021-07-18T11:55:50.733 回答
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'

重新启动后,Postgres.app 运行起来就像一个魅力。

于 2013-09-23T15:12:50.410 回答
0

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

于 2014-09-30T16:29:43.063 回答
0

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

于 2019-08-21T07:17:16.533 回答
0

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

brew uninstall postgresql
rm -rf /usr/local/var/postgres

于 2020-12-16T17:06:47.193 回答