我正在使用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时仍然会遇到相同的错误。
答案 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版本。
我采取的步骤:
postgres.app
未运行。rm ~/Library/Application\ Support/Postgres/var-9.$X/postmaster.pid
var-9.$X
目录,只需运行rm ~/Library/Application\ Support/Postgres/postmaster.pid
postgres.app
答案 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
另一个选项:
(当上述方法无法正常工作且我无法杀死任何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)
我通过
解决了这个问题答案 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
并打开:
unix_socket_permissions = 0777
unix_socket_directory = '/tmp'
行重新启动后,Postgres.app就像魅力一样运行。
答案 24 :(得分:0)
我遇到了同样的问题,而我的问题是由我遇到的一些配置问题引起的。清除用户配置并在brew中重新安装postgres对我有用!
Task