当我尝试通过webapp访问postgres,或使用psql-d template1
打开postgres shell时,我收到一个错误。
psql:无法连接到服务器:没有这样的文件或目录服务器是否在本地运行并接受Unix域套接字“/tmp/. s.PGSQL.5432”上的连接?
(*我已经阅读了许多关于此错误的SO线程,但推荐的解决方案并没有为我修复此问题)
将postgres作为服务启动:
brew services restart postgresql
停止postgresql
…(可能需要一段时间)==
在终端中手动运行postgres:
我可以通过在终端窗口中运行下面的所有内容来工作,但我更喜欢在后台运行它。
postgres -D /usr/local/var/postgres9.6.3
集群:
我在/usr/local/var
中有3个db集群,但我想使用postgres9.6.3/
postgres
postgres9.5/
postgres9.6.3/
其中:
哪个psql
返回/usr/local/bin/psql
路径:
ech$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后,/usr/local/var/log
中包含的postgres. 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.
如果你想在9.6服务器上使用你的9.5数据。你必须运行:
pg_upgrade
(此处)或从9.5pg_dump到文件,然后pg_restore
|psql
取决于9.6上的备份类型…(此处)
如果您选择第一个选项,则不需要进一步的步骤-您的默认版本是9.6,它将与存量数据目录一起使用。
在运行pg_upgrade
之前,制作一个冷拷贝data_directory
服务定义仍在指定您的旧9.5数据目录。如果您打开~/Library/LaunchAgents/hombrew. 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。