服务器是否在本地运行并接受Unix域套接字上的连接
“ /tmp/.s.PGSQL.5432”?
这是我的第二次设置我的Mac上通过Homebrew设置了Postgresql,但我不知道发生了什么。以前,它一直在工作。在某个时候,我必须输入一个使事情搞砸的命令。我不确定。现在,每当我从命令行输入SQL命令时,都会收到上述消息。我已经运行了一个命令来检查服务器是否正在运行,并且显然没有运行。如果我尝试使用
$ $ postgres -D / usr / local / pgsql / data
启动服务器,则会收到以下错误:
postgres无法访问服务器配置文件
“ /usr/local/pgsql/data/postgresql.conf”:没有这样的文件或目录
我已经通过Homebrew卸载并重新安装了Postgresql,但问题仍然存在。我完全不知如何使它工作。任何帮助将不胜感激。
#1 楼
该问题也可以归因于一个崩溃的进程,该进程使postmaster.pid
文件遗留在后面。#2 楼
我得到的是相同的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在Catalina上为我解决了此问题
– Seniorpreacher
10月9日9:54
对我有用
– Vishal
10月22日5:00
#3 楼
答案在这里。运行以下命令以手动启动服务器:
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
#4 楼
我已经解决了同样的问题。仅仅是因为我忘了在使用前正确运行它。要在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
并重做这些步骤。希望对您有所帮助!
评论
更新:对于安装了Homebrew的postgres,brew服务启动postgresql现在是在登录时启动postgres的首选方式
–亨利
19年7月2日在17:29
#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服务
>
brew tap homebrew/services
将postgres作为后台服务启动
brew services start postgresql
手动停止postgres
brew services stop postgresql
我们也可以使用brew服务重启Postgres
brew services restart postgresql
#6 楼
当postgres服务器未运行时,会发生这种情况。在MAC上通过Homebrew正确安装Postgres的步骤:
brew install postgres
initdb /Users/<username>/db -E utf8
[这将初始化postgres以使用给定目录作为数据库目录。通常,不建议将用户目录用于数据库存储。编辑sudoers文件以添加initdb和类似命令,然后在/ usr / local / var / postgres上运行initdb]
pg_ctl -D /Users/<username>/db -l logfile start
[在成功完成第2步后,它将提示您运行第3步。启动服务器。]
评论
在尝试了数十个非工作步骤后,这对我有所帮助
–阿斯温·库马尔(Atwin Kumar)K P
10月29日6:04
#7 楼
我一直在寻找很长时间,这是最干净整洁的解决方案:我最近使用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 -upgradeing-postgres /
评论
请编辑您的答案,以便在链接停止工作时提供价值。您可以在如何参考他人撰写的材料中找到有关如何正确执行此操作的指南。谢谢。
–保罗·怀特♦
18年8月10日在20:36
这正是我的问题。干杯!
– Subtletree
8月31日21:57
#8 楼
它对我有用。根据系统中的版本更改您的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
#9 楼
我只是在/etc/postgresql/9.5/main/postgresql.conf中取消注释,而在unix_socket_permissions = 0777并重新启动postgres。
对我来说有效。
#10 楼
最近我遇到了类似的问题。还有另一个问题和解决方案。我正在运行2个版本的postgres(9.3和9.6),尽管服务器设置为在2个不同的端口上运行,但是bash上的psql命令如何尝试连接到默认端口5432。请确保检查您的服务器正在运行并检查端口设置,然后运行
psql -p <port> postgres
。解决方案是更改端口。
#11 楼
对我来说,重新启动后也发生了上述情况,上述任何解决方案都不适合我。在像这样检查服务器日志后:tail /usr/local/var/postgres/server.log
我注意到:像这样:
2019-11-06 11:04:31.797 CET [85029] FATAL: data directory "/usr/local/var/postgres" has invalid permissions
2019-11-06 11:04:31.797 CET [85029] DETAIL: Permissions should be u=rwx (0700) or u=rwx,g=rx (0750).
一切又恢复了,生活也很好。
评论
同样,在osx 10.15上使用postgresql @ 12。最后需要做的是Brew服务重启postgresql
–道格
2月28日15:46
#12 楼
使用以下命令检查postgres是否已在运行:
pgrep -u postgres -fa -- -D
通常,您会得到一行或多行,具体取决于您是否运行一个或多个服务器实例。如果postgres没有运行,您将没有任何行。
现在从数据目录中删除(
rm
)postmaster.pid
文件,该文件通常是~/Library/Application\ Support/Postgres/var-9.6
启动postgres服务器
如果数据目录已经包含
postmaster.pid
文件,则表明postgres正在运行。当服务器崩溃或被杀死时,需要在删除postmaster.pid
之前停止数据库进程,否则数据目录可能会损坏。#13 楼
如果有以下错误,请使用命令 brew postgresql-upgrade-database
更新它
找不到命令“ brew”,但可以将其安装:
sudo apt安装linuxbrew-wrapper
,然后使用命令
sudo apt install linuxbrew-wrapper
安装它
#14 楼
我得到了完全相同的错误消息,其中psql无法连接到服务器,,
brew install postgresql
给出了错误消息,无法安装plist文件。问题原来是某些软件安装将/ usr / local / var的所有权更改为root。
解决方案:$ sudo chown / usr / local / var`whoami`
我很惊讶
brew doctor
未检测到此。 psql:无法连接到服务器:没有这样的文件或目录。服务器是否在本地运行并在Unix域套接字“ /tmp/.s.PGSQL.5432”上接受连接?
#15 楼
问题的高级摘要:由于以下原因之一,可能会发生此问题:
也许该端口不是使用的默认端口(5432)-如何确认?
ps -ef | grep UID && ps -ef | grep postgres
从下面的输出中获取5833的pid:
UID PID PPID C STIME TTY TIME CMD
501 5833 1 0 12:07PM ?? 0:00.13 /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres
如果不要获得上述输出,很可能postgres服务器未运行。您可以使用pg_ctl或其他命令来确认postgres服务器状态。还有其他有关如何检查状态的文章
用pid查找日志位置(5833是上述命令的postgres的pid,将pid用您从获得的命令输出中的pid替换):
$ lsof -p 5833 | grep log
postgres 5833 <username> 1u REG 1,4 1610136 14411021 /usr/local/var/log/postgres.log
打开日志文件,然后从日志行中确认端口号,如下所示:
[5833] LOG: listening on IPv4 address "127.0.0.1", port 5488
[5833]在这种情况下为进程ID
因此,您可以grep以及:
egrep "[5833]*listening*" /usr/local/var/log/postgres.log
一旦获得端口(在我的情况下为5488),则使用选项“ -p”连接到postgres服务器以进行连接(替换为从日志中找到的端口) :
psql -p 5488 <databasename> #add host and other options as needed
b。该过程根本没有运行,或者还有其他问题,可以在日志中再次看到(可以在上述步骤中找到)。如果postgres服务器未启动,请尝试使用适合您所使用操作系统的命令重新启动postgres实例。
对于Mac OS,重新启动命令为
brew services restart postgresql
希望此方法有助于系统地排除故障问题。
评论
在MacOSX上,这个答案救了我。我的计算机硬重启后,出现与OP相同的错误。 brew services命令没有帮助,因为它们使一切似乎都在工作。删除postmaster.pid才使一切再次正常运行。谢谢!
– Vinhboy
18 Mar 5 '18 at 22:47
这也发生在我身上。在没有出现Postgres之后,Mac OS X的严重崩溃导致重新启动。 brew服务启动/停止/重新启动不起作用,您必须手动删除pid文件。
– Matthijs
19年5月29日在9:49
当然,推荐的方法是在docker容器中运行Postgres。非常容易启动,并且在关闭容器后可以清理一切。我想说,事实上现在应该在Docker容器中运行任何第三方应用程序。
–demisx
19年5月29日在13:27