psql不能连接到服务器:没有这样的文件或目录(Mac OS X)

重新启动我的Mac,我得到了可怕的Postgres错误:

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。

253982 次浏览

警告:如果你删除postmaster。pid,而不确定是否真的有postgres进程运行你,可能会永久破坏你的数据库。(PostgreSQL应该自动删除它,如果postmaster已经退出。)

解决方案:这解决了问题——我删除了这个文件,然后一切工作!

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

--

这就是我是如何发现为什么这个需要删除的。

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

    ps auxw | grep post
    
  2. I searched for the file .s.PGSQL.5432 that was in the error message above. i used the following command:

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

    在搜索了我的整个计算机后,这没有显示任何东西,所以文件不存在,但显然psql“想要它”或“认为它在那里”

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

    cat /usr/local/var/postgres/server.log
    

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

    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".
    
  4. Following the advice in the error message, I deleted the postmaster.pid file in the same directory as server.log. This resolved the issue and I was able to restart.

So, it seems that my macbook freezing and being hard-rebooted caused Postgres to think that it's processes were still running even after reboot. Deleting this file resolved. Hope this helps others! Lots of people have similar issues but most the answers had to do with file permissions, whereas in my case things were different.

Hello world:)
对我来说,最好但奇怪的方式是做下一步的事情。

1)下载postgres93.app或其他版本。将此应用程序添加到/Applications/文件夹中。

在文件.bash_profile(在我的主目录中)中添加一行(命令):
export PATH=/Applications/Postgres93.app/Contents/MacOS/bin/:$PATH
It's a PATH to psql from Postgres93.app. The row (command) runs every time console is started.

3) Launch Postgres93.app from /Applications/ folder. It starts a local server (port is "5432" and host is "localhost").

4) After all of this manipulations I was glad to run $ createuser -SRDP user_name and other commands and to see that it worked! Postgres93.app can be made to run every time your system starts.

5) Also if you wanna see your databases graphically you should install PG Commander.app. It's good way to see your postgres DB as pretty data-tables

Of, course, it's helpful only for local server. I will be glad if this instructions help others who has faced with this problem.

这个问题有很多来源,因此也有很多答案。每一次我都经历过。

1)如果你有某种类型的崩溃,删除/usr/local/var/postgres/postmaster。Pid文件可能是必需的,因为postgres可能没有正确处理它。但是确保没有进程正在运行。

2) Craig Ringer在其他文章中指出,苹果的postgreSQL捆绑导致Pg gem安装问题设置PATH环境变量是一个解决方案。

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

如果你偶然发现了这篇文章,如果你能找到其中一个来源,你将节省时间……

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

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

美元上

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

杀死pid_number美元

我刚刚得到了相同的问题,因为我已经把我的机器(ubuntu)进行更新,并得到以下错误:

could not connect to server:没有这样的文件或目录是服务器 在Unix域套接字上本地运行并接受连接 “/ var /运行/ postgresql / .s.PGSQL.5432”?< / p >

完成更新过程后,当我重新启动系统时,我的错误消失了。它的工作就像以前一样迷人。我猜这是在pg更新和另一个进程启动时发生的。

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

实际上postgres进程已经死亡,要查看postgres的状态,请运行以下命令

sudo /etc/init.d/postgres status

它会说进程已死,只要启动进程

sudo /etc/init.d/postgres start

如果你在macOS上,并通过homebrew安装了postgres,请尝试重新启动

brew services restart postgresql

如果你使用的是Ubuntu,你可以用这两个命令中的任意一个重新启动它

sudo service postgresql restart


sudo /etc/init.d/postgresql restart

我的问题是,我使用的是Gas Mask (Mac主机文件管理器),在我使用的hosts文件中没有localhost的条目。

我补充说:

127.0.0.1 localhost

这解决了我的问题。

超级新手警告:我正在学习web开发,我正在跟随的特定教程提到我必须安装Postgres,但实际上并没有提到我必须< em > < / em >运行它……一旦我打开Postgres应用程序,一切都很好。

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

对我来说,解决办法就是重启电脑。我首先尝试使用Brew服务重新启动,当它不起作用时,重新启动似乎是下一个最好的选择,然后再考虑一些更复杂的解决方案。之后一切都照常进行。

这发生在我的Mac (High Sierra)死机后,我不得不手动重启它(按住电源按钮)。我所要做的就是重新开始。

以上这些方法对我都没用。我必须以以下方式重新安装Postgres:

  • 用brew: brew uninstall postgresql卸载postgresql

  • brew doctor(修复这里的任何东西)

  • < p > brew cleanup

  • 删除所有Postgres文件夹:

  • < p > rm -r /usr/local/var/postgres

  • < p > rm -r ~/Library/Application\ Support/Postgres

  • 使用brew: brew install postgresql重新安装postgresql

  • 启动服务器:brew services start postgresql

  • 你现在必须创建你的数据库…(createdb)

如果你的postmaster.pid消失了,你不能重新启动或做任何事情,这样做:

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

正如最初解释的在这里

导致此错误的原因有很多,因此首先定位您的日志文件并检查其线索。它可能在/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完全是空的。所以我运行了以下程序:

initdb /usr/local/var/postgres

这个命令似乎发生了一些配置。

然后它让我运行这个:

postgres -D /usr/local/var/postgres

这告诉了我一个邮政局长。Pid文件已经存在。

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

ls /usr/local/var/postgres

这让我想到了邮政局长。pid文件。然后我做了brew services stop postgresql,和邮政局长。Pid文件消失。然后我做brew services start postgresql,和VIOLA,文件重新出现。

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

尽管我知道它们可能根本没有消失——我所做的新的初始化可能创建了一个新的data_area,而旧的data_area没有被指向。我必须看看它在哪里,并把它点回来,或者只是重新创建我的数据库。

希望这能有所帮助!阅读postgres的文档对我帮助很大。我讨厌看到类似于“粘贴这个就可以了!”这样的答案,因为我不知道到底发生了什么,为什么会这样。

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

To migrate existing data from a previous major version of PostgreSQL run:
brew postgresql-upgrade-database
我也有同样的问题。 大多数情况下,问题在于存在一个剩余文件

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

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

最后,我注意到我有一个问题,每当我试图安装任何东西时,它会弹出:

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

或者在安装结束时进行类似的操作。

我简单地做了sudo chmod -R 777 /private/tmp,它终于工作了!

我写下来是因为这可能是别人的解

我从LD_LIBRARY_PATH中删除了/usr/lib,它工作了。 我工作在dockerfile postgres:alpine.

执行/var/log/ 并运行cat postgres.log 在这里你会发现postgres失败的原因。 如果它是一个智能关闭,那么可能你的icu4c版本(Unicode的c++库)是不正确的,它与postgres链接。

.执行以下命令 < p > brew upgrade brew cleanup 这应该工作;)

这是我的方法:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
rm /usr/local/var/postgres/postmaster.pid
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

我在psql (PostgreSQL) 9.6.11中遇到了同样的问题。

什么对我有用?

删除邮政局长。pid——rm /usr/local/var/postgresql@9.6/postmaster.pid

restart postgres——brew services restart postgresql@9.6

如果postmaster.pid不存在或上述进程不工作,则运行——

sudo chmod 700 /usr/local/var/postgresql@9.6

导致这种情况发生的另一类原因是由于Postgres的版本更新。

你可以通过查看postgres日志来确认这是一个问题:

tail -n 10000 /usr/local/var/log/postgres.log

看到这样的条目:

DETAIL:  The data directory was initialized by PostgreSQL version 12, which is not compatible with this version 13.0.

在这种情况下(假设你在Mac上并使用brew),只需运行:

brew postgresql-upgrade-database

(奇怪的是,它在第一次运行时失败了,在第二次运行时工作了,所以在放弃之前尝试两次)

下面的命令帮助了我。问题出在PostgreSQL数据版本上。升级后,它开始为我工作良好。

brew upgrade postgresql
brew postgresql-upgrade-database
brew services restart postgresql

我也遇到了同样的问题,这是由于从版本11升级到13.2后版本不兼容

检查错误日志:

/usr/local/var/log/postgres.log

给我:

DETAIL:  The data directory was initialized by PostgreSQL version 11, which is not compatible with this version 13.2.

为了解决这个问题,我跑了:

brew postgresql-upgrade-database

然后用brew启动postresql:

brew services start postgresql

我也犯过类似的错误。

所有这些都是从命令行完成的(根本没有sudo调用)。

  1. 我验证了我已经安装了PostgreSQL psql -V(注意,这是一个大写的"V")
  2. 我试图连接到服务器:psql postgres

这就是我在堆栈溢出问题中遇到错误的地方

在做了一些关于可能的修复的研究之后,我显然安装了PostgreSQL,但我没有一个默认的服务器。

我要做的是创建自定义数据目录

据我所知,创建自定义数据目录与设置默认服务器是一样的。

由于这是一台新机器(使用apple m1芯片的MacBook Pro 2021),我想找到最简单的解决方案,我相信这个自定义数据目录就是这样。修复此问题的其余步骤如下:

  1. 从主目录,我创建了一个空目录mkdir myData
  2. 从主目录,初始化一个服务器:initdb myData(将一堆文件扔到myData目录中)
  3. pg_ctl -D myData -l logfile start(启动服务器)
  4. psql postgres(连接到服务器)

所以,作为一个刚刚接触PostgreSQL和数据库以及SQL的人,有几点注意事项:

  • 这是可能的&;quit&;使用\q连接到服务器(当连接到服务器时,也可以输入"help")
  • 也可以“停止”;服务器,以及pg_ctl -D myData stop

在这一点上,我现在确定我已经安装了PostgreSQL,有一个服务器,我可以启动和停止,并有能力连接到/断开,该服务器。

当我试图在MacOS蒙特利上启动PostgreSQL数据库服务器时,我也有同样的担忧。

当我运行以下命令重新启动PostgreSQL数据库服务器时:

brew services restart PostgreSQL

它重新启动,但当我尝试使用下面的命令检查PostgreSQL数据库服务器的状态时,我得到一个错误:

Name       Status     User           File
mysql      started    promisepreston ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
nginx      started    promisepreston ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
postgresql error  256 root           ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

以下是对我有效的方法:

首先,我检查了PostgreSQL数据库服务器的日志文件,使用下面的命令查看错误的原因:

cat /usr/local/var/log/postgres.log

nano /usr/local/var/log/postgres.log

日志显示以下错误:

"root" execution of the PostgreSQL server is not permitted.
The server must be started under an unprivileged user ID to prevent
possible system security compromise.  See the documentation for
more information on how to properly start the server.
2022-01-25 19:01:06.051 WAT [29053] FATAL:  database files are incompatible with server
2022-01-25 19:01:06.051 WAT [29053] DETAIL:  The data directory was initialized by PostgreSQL version 13, which is not compatible with this version 14.1.

对于根执行错误我必须运行以下命令来修复文件权限,当我用sudo命令前缀运行brew services时,文件权限被打乱了。用你的MacOS用户名替换your-username(在我的情况下,我的用户名是promisepreston:

# Stop postgresql
sudo brew services stop PostgreSQL


# In case service file is copied to ~/Library/LaunchAgents as well
brew services stop postgresql


# Fix permission of homebrew files
sudo chown -R your-username:admin $(brew --prefix)/*

数据库文件与服务器不兼容我必须简单地升级现有的PostgreSQL数据文件,这些文件是使用版本13创建的,到我的计算机上的最新PostgreSQL版本14.1,通过运行下面的命令:

brew postgresql-upgrade-database

之后,我重启了PostgreSQL数据库服务器:

brew services restart PostgreSQL

然后使用下面的命令检查状态:

brew services list

然后我得到了下面的输出,显示一切正常工作:

Name          Status  User           File
mysql         started promisepreston ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
nginx         started promisepreston ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
postgresql    started promisepreston ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

参考文献: Brew PostgreSQL启动,但进程未运行

这个答案对我有用:在我的ubuntu系统上https://stackoverflow.com/a/45454567/15067545

命令:sudo service postgresql restart

对于那些在M1 mac上遇到这个问题的人,尝试删除这个文件,然后重新启动brew服务:

rm /opt/homebrew/var/postgres/postmaster.pid