Macos Postgres DB未在Mac OSX上启动:错误说明:Unix域套接字上的连接
我安装了Postgresql,然后在本地Mac OSX Mountain Lion上运行了一系列rails应用程序,并创建了数据库等。今天,当我启动pgAdminIII并尝试启动数据库服务器时,我遇到了以下错误: 一个快速的谷歌显示帖子。更多的浏览表明,可能存在某种postmaster.pid文件,这可能是造成这种情况的根本原因。如果我删除了,事情就好了 然而,在我删除我电脑上的东西之前,我想确保我以一种系统的方式调试它,而不会导致更多的问题 我在某个地方读到,在删除该文件之前,我需要运行以下命令:Macos Postgres DB未在Mac OSX上启动:错误说明:Unix域套接字上的连接,macos,postgresql,unix,pid,pgadmin,Macos,Postgresql,Unix,Pid,Pgadmin,我安装了Postgresql,然后在本地Mac OSX Mountain Lion上运行了一系列rails应用程序,并创建了数据库等。今天,当我启动pgAdminIII并尝试启动数据库服务器时,我遇到了以下错误: 一个快速的谷歌显示帖子。更多的浏览表明,可能存在某种postmaster.pid文件,这可能是造成这种情况的根本原因。如果我删除了,事情就好了 然而,在我删除我电脑上的东西之前,我想确保我以一种系统的方式调试它,而不会导致更多的问题 我在某个地方读到,在删除该文件之前,我需要运行以下
ps auxw | grep post
如果没有结果,那么可以删除该文件。不然就不行了。好吧,我得到了这个命令的结果:
AM 476 0.0 0.0 2423356 184 s000 R+ 9:28pm 0:00.00 grep post
所以现在我当然完全糊涂了
那我该怎么办
以下是我的postgres服务器错误日志的一部分:
FATAL: lock file "postmaster.pid" already exists
HINT: Is another postmaster (PID 171) running in data directory "/usr/local/var/postgres"?
Postgresql仍然没有运行,仍然收到相同的错误,并且没有任何更改。我太胆小了,不能不检查就删除东西
请你们中的一些专家指导一个noob
谢谢我的数据库正在运行 以下是我采取的步骤:
cd/
ls-la
MackintoshHD/usr/local/var/postgres
ls-la
cp postmaster.pid~/Desktop
,它复制了
文件到我的桌面。如果我要删除文件,我喜欢这样做。如果
有什么不对劲我可以把它放回去rm-r postmaster.pid
感谢@Craig Ringer的帮助如果数据库没有正确关闭,这可能会发生。要修复它,只需删除
postmaster.pid
文件。位置因您的操作系统而异:
MacOS:
rm /Users/<user_name>/Library/Application\ Support/Postgres/var-9.6/postmaster.pid
rm /usr/local/var/postgres/postmaster.pid
我今天在Mac Sierra上也遇到了同样的问题。在Mac Sierra中,您可以在
/Users//Library/Application Support/Postgres/var-9.6
中找到postmaster.pid
。删除postmaster.pid
,问题将得到解决。我正在使用Postgres.app,以下内容对我有效:
我在下面的终端中输入了命令,事先找到了Postgres文件夹,没有使用“justin”
正如Justin在他的帖子中解释的,这之后的输出是:
等待服务器关闭………..失败的pg_ctl:
服务器未关闭
再次输入命令后:
$pg_ctl restart -m immediate
它成功了,我得到了这个信息:
pg_ctl:旧服务器进程(PID:373)似乎在启动服务器时消失了
反正服务器启动日志:数据库系统被中断;最后的
已知时间2015-07-28 18:15:26 PDT日志:数据库系统不可用
妥善关闭,;正在进行的自动恢复日志:使用
0/4F0F7A8处长度为零日志:不需要重做日志:数据库
系统已准备好接受连接日志:自动真空发射器已启动
首先,我不是专家。话虽如此,听起来你的数据库没有正常关闭。我会删除pid文件并尝试启动数据库。是的,这就是我想要做的,但我在某个地方读到,如果pid正在运行,这可能会对数据库造成永久性损坏。不知道那是什么about@banditKing您不应该需要删除
postmaster.pid
。如果它无效(过时),服务器会在启动时删除它,这对于数据保护很重要。请解释您是如何在计算机上安装PostgreSQL的-通过EnterpriseDB安装程序、自制、Postgres.app,什么?还要提到PostgreSQL版本。最后,如果您在Pgadmin III中显式地将“localhost”添加到连接选项中,它会工作吗?如果是这样的话,你正被苹果不久前做出的一个非常糟糕的包装决定所折磨…@CraigRinger感谢你的澄清。我不记得我是怎么安装的,那是很久以前的事了。有什么我能做的吗?或者那里的数据只是测试数据,所以,在最坏的情况下,我可以卸载并重新安装。有关于如何正确操作的好博客/教程吗?@banditKing尝试重新启动?您可以确定如何从以下位置安装:。看起来你可能用的是自制的。如果PostgreSQL server未能正确删除postmaster.pid
,那么您可以在验证没有运行postgres
进程后将其删除,确保实际上没有PostgreSQL进程非常重要。服务器无法删除过时的postmaster.pid对我来说似乎是个bug。谢谢,这个解决方案很有效!删除postmaster.pid
并运行postgres-D/usr/local/var/postgres
后,它会注意到错误原因:“数据库系统未正确关闭;正在进行自动恢复”这解决了我的问题此项工作正常。在我的例子中,pid文件并没有因为硬重启而被删除,所以只能进行备份。我的文件不在/usr/local/var/postgres中,而是在/Users/[myhome]/Library/Application Support/postgres/var-9.5/-最后一个目录取决于你的版本,删除了postmaster.pid,工作得很好,谢谢您删除了此位置的postmaster.pid
,问题已得到解决。谢谢这也是我需要找到postmaster.pid
文件的地方,因为我正在使用Postgres.app for Postgres.app。它是一样的:可能它位于这里/Users//Library/Application\Support/Postgres/var-10/postmaster.pid
我也在使用运行v10的Postgres.app。如果我的Mac在Postgres运行时意外关机
$declare -x PGDATA="/Users/justin/Library/Application Support/Postgres/var-9.4"
$pg_ctl restart -m immediate
$pg_ctl restart -m immediate