关于macos:psql:无法连接到服务器:没有这样的文件或目录(Mac OS X)

psql: could not connect to server: No such file or directory (Mac OS X)

重启我的Mac后,我遇到了可怕的Postgres错误:

1
2
3
psql: could NOT CONNECT TO server: No such file OR directory
 IS the server running locally AND accepting
 connections ON Unix DOMAIN socket"/var/run/postgresql/.s.PGSQL.5432"?

发生这种情况的原因是因为我的macbook完全因为一个无关的问题而冻结,我不得不使用电源按钮进行硬重启。 重新启动后,由于此错误,我无法启动Postgres。


警告:如果删除postmaster.pid而不确定没有正在运行的postgres进程,则可能会永久损坏您的数据库。 (PostgreSQL应该在postmaster退出时自动删除它。)。

解决方案:这解决了问题 - 我删除了这个文件,然后一切正常!

1
/usr/LOCAL/var/postgres/postmaster.pid

-

以下是我如何弄清楚为什么需要删除它。

  • 我使用以下命令查看是否有任何PG进程在运行。对我来说没有,我甚至无法启动PG服务器:

    1
    ps auxw | grep post
  • 我搜索了上面的错误消息中的.s.PGSQL.5432文件。我使用以下命令:

    1
    sudo find / -name .s.PGSQL.5432 -ls

    在搜索我的整台计算机后没有显示任何内容,因此该文件不存在,但显然psql"想要它"或"认为它在那里"。

  • 我看了一下我的服务器日志,看到了以下错误:

    1
    cat /usr/LOCAL/var/postgres/server.log

    在服务器日志的末尾,我看到以下错误:

    1
    2
    FATAL:  pre-existing shared memory block (KEY 5432001, ID 65538) IS still IN USE
    HINT:  IF you're sure there are no old server processes still running, remove the shared memory block or just delete the file"postmaster.pid".
  • 根据错误消息中的建议,我删除了与server.log相同的目录中的postmaster.pid文件。这解决了问题,我能够重新启动。

  • 因此,似乎我的macbook冻结并且被重新启动导致Postgres认为它的进程即使在重启后仍然在运行。删除此文件已解决。希望这有助于他人!很多人都有类似的问题,但大多数答案都与文件权限有关,而在我的情况下,情况则有所不同。


    以上都不适合我。我不得不以下列方式重新安装Postgres:

    • 使用brew:brew uninstall postgresql卸载postgresql
    • brew doctor(修复此处的任何内容)
    • brew cleanup
    • 删除所有Postgres文件夹:

      • rm -r /usr/local/var/postgres
      • rm -r /Users//Library/Application\ Support/Postgres
    • 使用brew:brew install postgresql重新安装postgresql

    • 启动服务器:brew services start postgresql
    • 您现在应该创建数据库...()


    如果你在macOS上并通过自制软件安装了postgres,请尝试重新启动它

    1
    brew services restart postgresql

    如果您使用的是Ubuntu,可以使用其中一个命令重新启动它

    1
    2
    3
    sudo service postgresql restart

    sudo /etc/init.d/postgresql restart


    也许这是不相关的,但是当您使用brewpostgres升级到主要版本时会出现类似的错误;使用brew info postgresql发现这有助于:

    1
    2
    TO migrate existing DATA FROM a previous major version OF PostgreSQL run:
    brew postgresql-upgrade-DATABASE


    如果你的postmaster.pid已经消失,你无法重启或任何事情,请执行以下操作:

    pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

    正如此处所述


    你好世界:)对我来说最好但最奇怪的方法就是做下一件事。
    1)下载postgres93.app或其他版本。将此应用添加到/ Applications /文件夹中。

    2)在文件.bash_profile中添加一行(命令)(在我的主目录中):

    1
    export PATH=/Applications/Postgres93.app/Contents/MacOS/bin/:$PATH

    它是从Postgres93.apppsql的路径。每次启动控制台时都会运行行(命令)。

    3)从/Applications/文件夹中启动Postgres93.app。它启动本地服务器(端口为"5432",主机为"localhost")。

    4)经过所有这些操作后,我很高兴运行$ createuser -SRDP user_name和其他命令并看到它有效!每次系统启动时都可以运行Postgres93.app

    5)此外,如果您想以图形方式查看数据库,则应安装PG Commander.app。将postgres数据库视为漂亮的数据表是一种很好的方式

    当然,它仅对本地服务器有用。如果这些指示可以帮助那些面临这个问题的人,我将很高兴。


    这个问题有很多来源,因而有很多答案。我经历过他们中的每一个。

    1)如果你遇到某种崩溃,可能需要删除/usr/local/var/postgres/postmaster.pid文件,因为postgres可能没有正确处理它。但要确保没有进程正在运行。

    2)Craig Ringer在其他帖子中指出Apple捆绑postgreSQL会导致pg gem安装问题设置PATH环境变量是一种解决方案。

    3)另一种解决方案是卸载并重新安装gem。 Brew更新可能也是必要的。

    如果您偶然发现这篇文章,如果您能确定其中一个来源,您将节省时间......


    对我来说,解决方案只是重启我的电脑。我首先尝试使用Brew服务重新启动,当它不起作用时,重新启动似乎是下一个最好的选择,在研究一些更复杂的解决方案之前。一切都按原样运作。


    我在这里遇到了类似的问题我解决了这个问题,如下所示。

    实际上postgres进程已经死了,看到postgres的状态运行以下命令

    1
    sudo /etc/init.d/postgres STATUS

    它会说这个过程已经死了。只需启动这个过程

    1
    sudo /etc/init.d/postgres START


    在我的Mac(High Sierra)冻结后我发生了这种情况,我不得不手动重启(按住电源按钮)。我所要解决的就是彻底重启。


    我的问题最终是因为我正在使用防毒面具(Mac的主机文件管理器),而我在我使用的主机文件中没有localhost条目。

    我补充说:

    1
    127.0.0.1 localhost

    这解决了我的问题。


    导致此错误的原因很多,因此首先找到您的日志文件并检查它是否有线索。它可能在/usr/local/var/log/postgres.log/usr/local/var/postgres/server.log或可能在其他地方。如果您使用Homebrew安装,则可以在~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist中找到该位置。


    我不完全确定为什么,但我的Postgres安装有点搞砸,一些文件被删除导致错误OP显示。

    尽管我能够运行brew service retart postgres之类的命令并查看正确的消息,但这个错误仍然存??在。

    我浏览了postgres文档,发现我的文件/usr/local/var/postgres完全是空的。所以我运行了以下内容:

    1
    initdb /usr/LOCAL/var/postgres

    似乎使用该命令进行了一些配置。

    然后它让我运行这个:

    1
    postgres -D /usr/LOCAL/var/postgres

    那告诉我一个postmaster.pid文件已经存在。

    我只需要知道brew是否能够拿起我刚刚运行的配置,所以我测试了它。

    1
    ls /usr/LOCAL/var/postgres

    这向我展示了一个postmaster.pid文件。然后我做了brew services stop postgresql,postmaster.pid文件消失了。然后我做了brew services start postgresql和VIOLA,文件再次出现。

    然后我继续运行我的应用程序,实际上确实找到了服务器,但是我的数据库似乎已经消失了。

    虽然我知道它们可能根本不存在 - 我所做的新初始化可能已经创建了一个新的data_area,并且没有指出旧的。我必须查看它的位置并将其指回,或者只是再次创建我的数据库。

    希望这可以帮助!阅读postgres文档对我帮助很大。我讨厌阅读像"将其粘贴在其中的作品!"的答案。因为我不知道到底发生了什么,为什么。


    我遇到过同样的问题。
    大多数情况下,问题在于存在剩余文件

    /usr/local/var/postgres/postmaster.pid

    这适用于大多数人,但我的情况不同 - 我尝试谷歌搜索这个问题最近3个小时,在OSX上通过brew卸载postresql,清除数据库,没有任何工作。

    最后,我注意到我遇到了brew的问题,每当我尝试安装任何东西时,它都弹出:

    Error: Permission denied @ rb_sysopen - /private/tmp/github_api_....

    或者在安装结束时喜欢它。

    我只是做了sudo chmod -R 777 /private/tmp,它终于有效了!

    我写下来因为这可能是其他人的解决方案


    转到/var/log/
    并运行cat postgres.log
    在这里你会发现postgres失败的原因。
    如果是智能关闭,那么可能你的icu4c版本(Unicode的C ++库)不适合与postgres链接。因此,请运行以下命令。

    brew upgrade
    brew cleanup
    这应该工作;)


    SUPER NEWBIE ALERT:我刚学习网页开发和我之后提到的特定教程我必须安装Postgres但实际上没有提到我必须运行它...一旦我打开Postgres应用程序一切都很好,花花公子。


    我刚刚得到了与我的机器(ubuntu)进行更新并出现以下错误相同的问题:

    could not connect to server: No such file or directory Is the server
    running locally and accepting connections on Unix domain socket
    "/var/run/postgresql/.s.PGSQL.5432"?

    完成更新过程后,当我重新启动系统错误消失。它的工作就像以前的魅力一样..我猜这是因为pg正在更新而另一个流程开始了。


    我不得不多次查阅这篇文章来解决这个问题。还有另一个修复,它也适用于其他正在运行的程序的类似问题。

    我刚刚发现你可以使用以下两个命令。

    $顶部

    这将显示所有当前正在运行的操作及其pid编号。当你找到postgres和相关的pid

    $ kill pid_number


    我从LD_LIBRARY_PATH中删除了/ usr / lib并且它工作正常。
    我在dockerfile postgres工作:alpine。


    经过一些搜索,找到了类似的问题和一个简单的答案,我的工作:
    只需"使用以下命令将现有版本升级到更新版本":

    1
    brew postgresql-upgrade-DATABASE

    感谢ssamateh对这个相关主题的回答


    @Jagdish Barabari的回答给了我解决这个问题的线索。原来有两个版本的postgresql安装,只有一个正在运行。清除所有postgresql文件并重新安装最新版本为我解决了这个问题。