重新启动我的 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。
brew reinstall postgresql
stackoverflow.com/a/39781473/6086226 为我工作
警告:如果您删除 postmaster.pid 而不确保确实没有 postgres
进程在运行您,可能会永久损坏您的数据库。 (如果 postmaster 已经退出,PostgreSQL 应该自动删除它。)。
解决方案:这解决了问题——我删除了这个文件,然后一切正常!
/usr/local/var/postgres/postmaster.pid
--
这就是我如何弄清楚为什么需要删除它。
我使用以下命令查看是否有任何 PG 进程正在运行。对我来说没有,我什至无法启动 PG 服务器:ps auxw | grep post 我搜索了上面错误消息中的文件 .s.PGSQL.5432。我使用了以下命令: sudo find / -name .s.PGSQL.5432 -ls 这在搜索我的整个计算机后没有显示任何内容,因此该文件不存在,但显然 psql “想要它”或“认为它”在那里”。我查看了我的服务器日志并看到以下错误:服务器日志末尾的 cat /usr/local/var/postgres/server.log 我看到以下错误:FATAL: pre-existing shared memory block (key 5432001,ID 65538)仍在使用 提示:如果您确定没有旧的服务器进程仍在运行,请删除共享内存块或删除文件“postmaster.pid”。按照错误消息中的建议,我删除了与 server.log 相同目录中的 postmaster.pid 文件。这解决了问题,我能够重新启动。
因此,似乎我的 macbook 冻结和硬重启导致 Postgres 认为即使在重启后它的进程仍在运行。删除此文件已解决。希望这对其他人有帮助!很多人都有类似的问题,但大多数答案都与文件权限有关,而在我的情况下情况有所不同。
以上都不适合我。我必须通过以下方式重新安装 Postgres:
使用 brew 卸载 postgresql : brew uninstall postgresql
酿造医生(修复这里的任何东西)
冲泡清理
删除所有 Postgres 文件夹:
rm -r /usr/local/var/postgres
rm -r ~/Library/Application\ Support/Postgres
使用 brew 重新安装 postgresql: brew install postgresql
启动服务器: brew services start postgresql
您现在应该必须创建您的数据库... (createdb)
brew postgresql-upgrade-database
brew reinstall postgres
就可以了,确认最新的 Homebrew Postgres 主要版本号与我当前的(损坏的)版本号相同。
brew reinstall postgresql
不会擦除您的数据库吗?
如果您在 macOS 上并通过自制软件安装了 postgres,请尝试使用以下命令重新启动它
brew services restart postgresql
如果您使用的是 Ubuntu,则可以使用以下任一命令重新启动它
sudo service postgresql restart
sudo /etc/init.d/postgresql restart
也许这无关,但是当您使用 brew
将 postgres
升级到主要版本时会出现类似的错误;使用 brew info postgresql
发现这有助于:
To migrate existing data from a previous major version of PostgreSQL run:
brew postgresql-upgrade-database
这是我的方式:
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
rm /usr/local/var/postgres/postmaster.pid
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
fix-my-postgresql
时它会执行这个:)
以下命令帮助了我。问题在于 PostgreSQL 数据版本。升级后,它开始对我正常工作。
brew upgrade postgresql
brew postgresql-upgrade-database
brew services restart postgresql
brew upgrade postgresql@VERSION
为我做的,VERSION=11 等。
如果您的 postmaster.pid
不见了并且您无法重新启动或其他任何事情,请执行以下操作:
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
正如最初解释的 here
对我来说,解决方案就是重新启动我的电脑。我首先尝试使用 Brew 服务重新启动,但当它不起作用时,重新启动似乎是在研究一些更复杂的解决方案之前尝试的下一个最佳选择。之后一切正常。
发生这种情况的另一类原因是 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
(奇怪的是,它在运行 1 上失败并在运行 2 上工作,所以在放弃之前尝试了两次)
connection to database failed: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/usr/local/var/log/.s.PGSQL.50432"?
但第二次运行它正常工作¯\_(ツ)_/¯
Hello world :)
对我来说最好但奇怪的方法是做接下来的事情。
1) 下载 postgres93.app 或其他版本。将此应用程序添加到 /Applications/ 文件夹中。
2) 在文件 .bash_profile
(在我的主目录中)中添加一行(命令):
export PATH=/Applications/Postgres93.app/Contents/MacOS/bin/:$PATH
psql
Postgres93.app
3) 从 /Applications/
文件夹启动 Postgres93.app
。它启动一个本地服务器(端口是“5432”,主机是“localhost”)。
4) 在所有这些操作之后,我很高兴运行 $ createuser -SRDP user_name
和其他命令并看到它有效! Postgres93.app
可以在每次系统启动时运行。
5) 此外,如果您想以图形方式查看数据库,您应该安装 PG Commander.app
。将您的 postgres 数据库视为漂亮的数据表的好方法
当然,它只对本地服务器有用。如果此说明对遇到此问题的其他人有所帮助,我将很高兴。
export PATH='/usr/local/Cellar/postgresql/9.4.1/bin/':$PATH
– 请记住您的版本号可能不同。
这个问题有很多来源,因此有很多答案。我经历过他们中的每一个。
1) 如果您遇到某种崩溃,可能需要删除 /usr/local/var/postgres/postmaster.pid 文件,因为 postgres 可能没有正确处理它。但请确保没有进程正在运行。
2) Craig Ringer 在其他帖子中指出,Apple 捆绑 postgreSQL 导致 pg gem installation issues 设置 PATH 环境变量是一种解决方案。
3)另一种解决方案是卸载并重新安装gem。可能还需要 brew 更新。
如果你偶然发现这篇文章,如果你能查明其中一个来源,你会节省时间......
我在这里遇到了类似的问题,我解决了这个问题,如下所示。
实际上 postgres 进程已经死了,要查看 postgres 的状态运行以下命令
sudo /etc/init.d/postgres status
它会说这个过程已经死了`只需启动这个过程
sudo /etc/init.d/postgres start
这发生在我的 Mac(High Sierra)死机后,我不得不手动重新启动它(按住电源按钮)。我所要做的就是彻底重启。
我遇到过同样的问题。大多数时候,问题在于有一个剩余文件
/usr/local/var/postgres/postmaster.pid
这适用于大多数人,但我的情况不同 - 我尝试在过去 3 小时内搜索这个问题,通过 brew 在 OSX 上卸载 postresql,清除数据库,没有任何效果。
最后,我注意到我遇到了一个 brew 问题,每当我尝试安装任何东西时,它都会弹出:
Error: Permission denied @ rb_sysopen - /private/tmp/github_api_....
或安装结束时的类似内容。
我只是做了sudo chmod -R 777 /private/tmp
,它终于奏效了!
我写下来是因为这可能是其他人的解决方案
psql (PostgreSQL) 9.6.11
我遇到了同样的问题。
什么对我有用-
删除 postmaster.pid -- rm /usr/local/var/postgresql@9.6/postmaster.pid
重新启动 postgres -- brew services restart postgresql@9.6
如果 postmaster.pid
不存在或上述过程不起作用,则运行 --
sudo chmod 700 /usr/local/var/postgresql@9.6
postgresql@11
的常规问题。每当我的笔记本电脑放电并被迫重新启动时,我都会经常遇到这个问题。
我的问题最终是我使用了 Gas Mask(Mac 的主机文件管理器),而我正在使用的主机文件中没有 localhost 条目。
我补充说:
127.0.0.1 localhost
这解决了我的问题。
我不完全确定为什么,但我的 Postgres 安装有点搞砸了,一些文件被删除,导致错误 OP 显示。
尽管我能够运行 brew service retart postgres
之类的命令并看到正确的消息,但此错误仍然存在。
我浏览了 postgres 文档,发现我的文件 /usr/local/var/postgres
完全是空的。所以我运行了以下内容:
initdb /usr/local/var/postgres
似乎使用该命令进行了一些配置。
然后它要求我运行这个:
postgres -D /usr/local/var/postgres
这告诉我 postmaster.pid 文件已经存在。
我只需要知道 brew 是否能够获取我刚刚运行的配置,因此我对其进行了测试。
ls /usr/local/var/postgres
那向我展示了一个 postmaster.pid 文件。然后我做了brew services stop postgresql
,postmaster.pid 文件消失了。然后我做了brew services start postgresql
,VIOLA,文件又出现了。
然后我继续运行我的应用程序,它确实找到了服务器,但是我的数据库似乎不见了。
虽然我知道它们可能根本不会消失——我所做的新初始化可能已经创建了一个新的 data_area,而旧的并没有被指向。我必须查看它的位置并将其重新指向或重新创建我的数据库。
希望这可以帮助!阅读 postgres 文档对我帮助很大。我讨厌阅读诸如“将其粘贴进去!”之类的答案。因为我不知道到底发生了什么以及为什么。
我有同样的问题,这是由于从版本 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
这个错误的原因很多,所以首先找到你的日志文件并检查它是否有线索。它可能位于 /usr/local/var/log/postgres.log
或 /usr/local/var/postgres/server.log
或其他位置。如果您使用 Homebrew 安装,您可以在 ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
中找到该位置。
转到 /var/log/
并运行 cat postgres.log
在这里您将找到 postgres 失败的原因。如果它是智能关闭,那么您的 icu4c
版本(Unicode 的 C++ 库)可能与 postgres
链接不正确。所以运行以下命令。
brew upgrade
brew cleanup
这应该可行 ;)
brew cleanup
破坏 Homebrew,则可能必须在之后运行 brew style
。
在连接尝试在 MacOS Monterey 上启动 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
时,我必须运行以下命令来修复文件权限问题。将 your-username
替换为您的 MacOS 用户名(在我的情况下,我的用户名是 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)/*
由于数据库文件与服务器不兼容,我必须简单地将使用版本 13 创建的现有 PostgreSQL 数据文件升级到我计算机上的最新 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 Starts But Process Is Not Running
我不得不多次查找这篇文章来解决这个问题。还有另一个修复程序,它也适用于其他正在运行的程序的类似问题。
我刚刚发现您可以使用以下两个命令。
$顶部
这将显示所有当前正在运行的操作及其 pid 编号。当你找到 postgres 和相关的 pid
$kill pid_number
ps aux | grep \[p\]ostgres | awk '{ print $2 }'
以返回 pid,或 kill $(ps aux | grep \[p\]ostgres | awk '{ print $2 }')
(在 zsh 上 []
必须转义为 \[\]
,但不是在 bash 上)
我刚刚遇到了与我将机器(ubuntu
)进行更新相同的问题并出现以下错误:
无法连接到服务器:没有这样的文件或目录服务器是否在本地运行并接受 Unix 域套接字“/var/run/postgresql/.s.PGSQL.5432”上的连接?
完成更新过程后,当我重新启动系统错误消失了。它的工作就像以前一样魅力。我猜这是在 pg 更新并且另一个进程开始时发生的。
超级新手警报:我刚刚学习 Web 开发,我遵循的特定教程提到我必须安装 Postgres,但实际上并没有提到我也必须运行它......一旦我打开 Postgres 应用程序,一切都很好,而且花花公子。
@Jagdish Barabari 的回答给了我解决这个问题所需的线索。结果发现只有一个运行时安装了两个版本的 postgresql。清除所有 postgresql 文件并重新安装最新版本为我解决了这个问题。
我从 LD_LIBRARY_PATH 中删除了 /usr/lib 并且它起作用了。我在 dockerfile postgres:alpine 工作。
只是把我的解决方案放在这里,因为我有一个类似的错误
所有这些都是从命令行完成的(根本没有 sudo
代码)
我确认我已经安装了 PostgreSQL psql -V(这是一个大写的“V”顺便说一句)我试图连接到服务器:psql postgres
这就是我遇到这个问题的错误的地方
在对可能的修复进行了一些研究之后,我显然安装了 PostgreSQL,但我没有安装默认服务器。
我必须做的是create a Custom Data Directory
据我所知,创建自定义数据目录与使用默认服务器相同。
由于这是一台新机器(使用苹果 m1 芯片的 macBook pro 2021),我想找到最简单的解决方案,我相信这个自定义数据目录就是这样。解决此问题的其余步骤如下:
从主目录,我创建了一个空目录 mkdir myData 从主目录,初始化了一个服务器: initdb myData (将一堆文件扔到 myData 目录中) pg_ctl -D myData -l logfile start (启动服务器) psql postgres (连接到服务器)
所以,作为一个对 PostgreSQL 和数据库和 SQL 相当陌生的人,请注意:
可以使用 \q “退出”与服务器的连接(连接到服务器时,也可以键入“帮助”)
也可以使用 pg_ctl -D myData stop 来“停止”服务器
在这一点上,我现在确定我已经安装了 PostgreSQL,有一个可以启动和停止的服务器,并且能够连接到该服务器/从该服务器断开连接。
如果其中任何一个“不好”,请告诉我。
这个答案对我有用:https://stackoverflow.com/a/45454567/15067545 在我的 ubuntu 系统上。
命令:sudo service postgresql restart
。
对于在 M1 mac 上遇到此问题的用户,请尝试删除此文件,然后重新启动 brew 服务:
rm /opt/homebrew/var/postgres/postmaster.pid
不定期副业成功案例分享
postgres
进程正在运行。/usr/local/var/log/postgres.log
。