主持人无法在postgres中识别

时间:2015-07-21 18:46:16

标签: ruby-on-rails postgresql

我们在日志中看到了一个问题

FATAL:  lock file "/tmp/.s.PGSQL.5432.lock" already exists
HINT:  Is another postmaster (PID 4696) using socket file "/tmp/.s.PGSQL.5432"?
LOG:  could not bind IPv4 socket: Address already in use

我们删除了/tmp/.s.PGSQL.5432.lock

我们重启了服务重启的postgres服务

但是psql -h localhost -d database -U newuser

显示错误角色'newuser'不存在

但如果我们连接没有主机

psql -d database -U newuser

它有效,我们如何使用主机选项?

我们是否在删除tmp文件后遗漏了某些内容?

1 个答案:

答案 0 :(得分:0)

与上一个相同,你在机器上运行了两个PostgreSQL实例。

删除套接字文件而不是关闭实例。这允许您的第二个实例启动,但它只在侦听unix套接字。据推测,listen_addresses未设置/为空,因此它不会尝试绑定到TCP / IP套接字,因为如果它尝试并且端口5432已在使用中,它将会失败。

另一个实例仍在运行,仍然在端口5432上侦听TCP / IP连接。当您指定-h localhost时,您将获得TCP / IP连接而不是默认的unix套接字连接,因此您将连接到系统上的另一个PostgreSQL实例。

所有问题都是由于删除和删除事物而不是识别底层问题(第二个PostgreSQL实例)以及解决这个问题引起的。