提问者:小点点

为什么将postgres作为服务运行时无法访问它?


当我尝试通过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.

共2个答案

匿名用户

如果你想在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。