PostgreSQL无法在Mac上运行


55

整个错误显示为:

psql:无法连接到服务器:没有这样的文件或目录。服务器是否在本地运行并在Unix域套接字“ /tmp/.s.PGSQL.5432”上接受连接?

这是我第二次在Mac上通过Homebrew设置Postgresql,我不知道发生了什么。以前,它一直在工作。在某个时候,我必须输入一个使事情搞砸的命令。我不确定。现在,每当我从命令行输入SQL命令时,都会收到上述消息。我已经运行了一个命令来检查服务器是否正在运行,并且显然没有运行。如果我尝试使用启动服务器

$ postgres -D / usr / local / pgsql / data

我收到以下错误:

postgres无法访问服务器配置文件“ /usr/local/pgsql/data/postgresql.conf”:没有这样的文件或目录

我已经通过Homebrew卸载并重新安装了Postgresql,但是问题仍然存在。我完全不知道该如何工作。任何帮助,将不胜感激。

Answers:


51

该问题也可归因于进程崩溃,该进程使postmaster.pid文件滞后。

$ brew services stop postgresql
$ rm /usr/local/var/postgres/postmaster.pid # adjust path accordingly to your install
$ brew services start postgresql

4
在MacOSX上,这个答案救了我。我的计算机硬重启后,出现了与OP相同的错误。该brew services命令没有帮助,因为它们使一切看起来都正常工作。删除postmaster.pid最终使一切再次正常运行。谢谢!
vinhboy

1
这也发生在我身上。在没有出现Postgres之后,Mac OS X的严重崩溃导致重新启动。brew服务的启动/停止/重新启动不起作用,您必须手动删除pid文件。
Matthijs

推荐的方法当然是在docker容器中运行Postgres。非常容易启动,并且在关闭容器后可以清理所有内容。我想说,事实上现在应该在Docker容器中运行任何第三方应用程序。
demisx

43

答案在这里

运行以下命令以手动启动服务器:

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

14

我也一样

Is the server running locally and accepting connections on Unix domain 
socket "/tmp/.s.PGSQL.5432"?

Homebrew安装/启动/停止/重新启动的循环无济于事...

最后,brew postgresql-upgrade-database工作了。

似乎我使用的是9.6而不是10.4,最近一次App Store重新启动后重新启动了所有数据库服务器...


这对我
有用

brew postgresql-upgrade-database就是我所缺少的。感谢您指出了这一点。
科林

为我工作谢谢!
Erwin Rooijakkers,

我已经尝试了所有解决方案。但这是唯一为我工作的人。很高兴知道是否有人可以解释为什么这可以完全解决它。
JohnnyQ

11

我已经解决了同样的问题。这只是因为我忘了正常运行后使用。

对于在Mac OS上的纯安装 postgresql,此过程将是(使用brew命令):

brew install postgresql

然后,如果要postgresql在登录时自动运行:

ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents

否则,您只想在任何时候运行它:

postgres -D /usr/local/var/postgres

如果您的情况更复杂,让我们brew uninstall postgresql重做这些步骤。

希望能帮助到你!


1
更新:对于安装了Homebrew的postgres,brew services start postgresql现在是登录时启动postgres的首选方法
henry

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

我不断遇到上述错误,但以上解决方案均不适合我。最后,以下解决方案在Mac OS X上解决了我的问题

使用brew安装postgres

brew install postgres

安装冲泡服务

brew tap homebrew/services

将Postgres作为后台服务启动

brew services start postgresql

手动停止postgres

brew services stop postgresql

我们还可以使用brew服务重启Postgres

brew services restart postgresql

2

当postgres服务器未运行时,会发生这种情况。通过MAC上的Homebrew正确安装Postgres的步骤:

  1. brew install postgres

  2. initdb /Users/<username>/db -E utf8 [这将初始化postgres以使用给定目录作为数据库目录。通常,不建议将用户目录用于数据库存储。编辑sudoers文件以添加initdb和类似命令,然后在/ usr / local / var / postgres上运行initdb]

  3. pg_ctl -D /Users/<username>/db -l logfile start [在成功完成步骤2之后,将提示您运行步骤3。此命令手动启动服务器。]


2

它为我工作。根据系统版本更改postgresql目录。

共同路径 rm /usr/local/var/postgres/postmaster.pid

但是对于我系统路径中的postgresql@9.6 rm /usr/local/var/postgresql@9.6/postmaster.pid

重新启动postgresql@9.6- brew services restart postgresql@9.6


是的,这是一个可行的!
PirateApp

1

我只是在/etc/postgresql/9.5/main/postgresql.conf中取消注释

unix_socket_permissions = 0777

并重启postgres。对我来说,它有效。


1

最近我遇到了类似的问题。还有另一个问题和解决方案。我正在运行2个版本的Postgres(9.3和9.6),尽管服务器设置为在2个不同的端口上运行,但是bash上的psql命令如何尝试连接到默认端口5432。请确保检查服务器是否正在运行并检查您的端口设置,然后运行psql -p <port> postgres。解决方案是更改端口。


1

我找了很长时间,这是最干净整洁的解决方案:

我最近使用brew升级postgres将Postgres从9.2升级到9.3。这个过程很顺利,而pg_upgrade是一个非常方便的工具。

但是,一旦我尝试运行连接到Postgres所需的任何规范,麻烦就来了。即使Postgres确实在运行,但突然我得到了:

无法连接到服务器:没有这样的文件或目录(PG :: ConnectionBad)服务器是否在本地运行并在Unix域套接字“ /var/pgsql_socket/.s.PGSQL.5432”上接受连接?问题是新版本的Postgres侦听/tmp/.s.PGSQL.5432。我本可以弄乱配置并让Postgres使用以前的域套接字,或者明确地告诉Rails如何连接,但是这两种方法似乎都是我不需要做的工作。我从来没有告诉过Rails在那条路上连接到postgres,Rails曾经假设过,现在它的假设是错误的。

如果有一点令人惊讶的话,修复很简单。当您安装“ pg” gem时,它将检测到安装了哪个版本的Postgres,并适当地设置了域套接字路径。解决方案就像重新安装gem一样简单。 $ gem uninstall pg $ cd my-rails-app/ $ bundle install

http://daniel.fone.net.nz/blog/2014/12/01/fixing-connection-errors-after-upgrading-postgres/


1
编辑您的答案,以便在链接停止工作提供价值。您可以在如何参考他人撰写的材料中找到有关如何正确执行此操作的指南。谢谢。
保罗·怀特

0

使用命令更新它

  brew postgresql-upgrade-database

如果找不到 以下错误 命令“ brew”,但可以使用以下命令安装:sudo apt install linuxbrew-wrapper

然后使用命令安装

 sudo apt install linuxbrew-wrapper

-3

以下步骤对我有帮助:

brew卸载postgresql brew安装postgresql brew brew postgresql-upgrade-database

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.