Macos Postgres DB未在Mac OSX上启动:错误说明:Unix域套接字上的连接

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文件,这可能是造成这种情况的根本原因。如果我删除了,事情就好了 然而,在我删除我电脑上的东西之前,我想确保我以一种系统的方式调试它,而不会导致更多的问题 我在某个地方读到,在删除该文件之前,我需要运行以下

我安装了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
  • 这里我看到了postmaster.pid文件
  • 我运行了这个命令
    cp postmaster.pid~/Desktop
    ,它复制了 文件到我的桌面。如果我要删除文件,我喜欢这样做。如果 有什么不对劲我可以把它放回去
  • 然后我运行这个命令从postgres中删除该文件 目录
    rm-r postmaster.pid
  • 我转到我的pgadmin3 gui并启动了它。瞧,成功了:)

  • 感谢@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