当我尝试通过webapp访问postgres,或者使用psql -d template1
打开postgres shell时,我收到错误。
psql:无法连接到服务器:没有这样的文件或目录 服务器在本地运行并接受Unix域上的连接 socket“/tmp/.s.PGSQL.5432”?
(*我已经阅读了很多有关此错误的SO主题,但推荐的解决方案并未解决此问题)
将postgres作为服务启动:
brew services restart postgresql
停止
postgresql
...(可能需要一段时间) ==>成功停止postgresql
(标签:homebrew.mxcl.postgresql) ==>已成功启动postgresql
(标签:homebrew.mxcl.postgresql)
在终端中手动运行postgres:
我可以通过在终端窗口中运行来完成所有工作,但我更愿意在后台运行它。
postgres -D /usr/local/var/postgres9.6.3
集群:
我在/usr/local/var
中有3个数据库集群,但我想使用postgres9.6.3/
postgres
postgres9.5/
postgres9.6.3/
其中:
which psql
返回/usr/local/bin/psql
路径:
echo $PATH
返回/usr/local/bin
和/usr/local/var
(已添加)
其他推荐的解决方案:
很多人可以通过删除/postgres/postmaster.pid
来解决此问题,但此文件对我来说并不存在。
正在运行ps -ef | grep postgres
,仅输出
501 2135 1530 0 12:08pm ttys002 0:00.00 grep postgres
使用brew servies
重新启动postgres后,postgres.log
中的/usr/local/var/log
包含,
FATAL: database files are incompatible with server
DETAIL: The data directory was initialized by PostgreSQL version 9.5, which is not compatible with this version 9.6.3.
答案 0 :(得分:3)
服务定义仍在指定旧的9.5数据目录。如果你打开〜/ Library / LaunchAgents / homebrew.mxcl.postgresql.plist,你会看到一个如下所示的部分:
<key>ProgramArguments</key>
<array>
<string>/usr/local/opt/postgresql/bin/postgres</string>
<string>-D</string>
<string>/usr/local/var/postgres9.5</string>
</array>
将最终参数更改为指向9.6.3数据目录并重新启动服务。如果它没有采取你可能需要注销并重新进入,以便重新读取plist。
答案 1 :(得分:3)