2017-08-11 23 views
5

当我尝试通过webapp访问postgres,或者使用psql -d template1打开postgres shell时,出现错误。为什么在将它作为服务运行时不能访问postgres?

PSQL:无法连接到服务器:没有这样的文件或目录的 服务器本地运行和验收Unix域连接 插座“/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 

集群:

我有3分贝集群/usr/local/var,但我想用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解决这个问题,但这文件对我来说不存在。

UPDATE

运行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

感冒副本| grep postgres'显示什么?如果没有,服务器实际上并没有运行 - 看起来很可能,鉴于错误。检查日志(应该在/usr/local/var/log/postgres.log中),看看有没有什么有趣的地方。 – dmfay

+0

添加了对问题 –

回答

3

如果你想使用9.6服务器的9.5数据。你必须运行:

  • pg_upgradehere)或
  • 从9.5 pg_dump到文件,并pg_restore | psql取决于备份类型在9.6 ...(here

如果你选择第一个选项,没有进一步的步骤需要 - 你的默认版本是9.6,它会与现有的数据目录工作。

运行pg_upgrade之前,您重新启动通过`冲泡services`服务后,做的`ps -ef的输出使data_directory

3

服务定义仍指定旧9.5数据目录。如果你打开〜/库/ 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。

+0

的更新我可以打开并编辑此文件(它显示旧版本)。但是,如果我使用'brew服务重新启动postgres'重新启动postgres,它会在我更新后恢复到旧版本。是否有另一种方式,我需要更新它比'sudo nano ...' –

+0

自制安装的默认数据目录是[/usr/local/var/postgres](https://wiki.postgresql.org/wiki/Installers/Mac_OS_X)。如果你切换目录,你应该能够升级而不用担心它。 – dmfay

相关问题