当我尝试连接数据库或rails s
时,有人可以帮助我解决这个问题吗?
在我的pg_hba.conf文件中,我有:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication Andrew trust
#host replication Andrew 127.0.0.1/32 trust
#host replication Andrew ::1/128 trust
local all all md5
也许我做错了?
由于
答案 0 :(得分:22)
我遇到了同样的问题。不知何故,这条线被添加到我的/ etc / hosts文件中:
fe80::1%lo0 localhost
注释掉/从/ etc / hosts中删除该行应该修复它
sudo vi /etc/hosts
#fe80::1%lo0 localhost
答案 1 :(得分:15)
我在OSX 10.9.3和Postgres 9.3.4。
我设法通过以下方式解决了这个问题:
首先通过使用pg_hba.conf
启动psql并执行SHOW hba_file;
来找到您的psql -h 127.0.0.1
文件:
hba_file
-------------------------------------
/usr/local/var/postgres/pg_hba.conf
(1 row)
现在将以下行添加到pg_hba.conf
:
host all all fe80::1%lo0/128 trust
并通过psql
内的select pg_reload_conf();
重新加载配置。
现在您应该可以通过psql -h fe80::1%lo0
进行连接。
答案 2 :(得分:3)
哦,这是一个有趣的。
假设您正在连接localhost
(您没有说并且没有显示您的database.yml
),localhost
似乎正在解析为an IPv6 link-local address with zone index。
如果您使用::1
或127.0.0.1
,则应该有效。
这很可能是操作系统错误配置或错误,因此如果您想要有任何具体建议,那么应该在问题中添加更多详细信息(请参阅上面的评论)。
答案 3 :(得分:1)
对我而言,原因是致电sudo rails server -p 80
。
我将rails服务器绑定到端口80,这样我就不必在开发期间在URL localhost:3000
中指定端口。这似乎是将fe80::1%lo0»localhost
写入我的/etc/hosts
文件。
尝试在主机文件中注释掉该行,然后运行rails s -p 3000
答案 4 :(得分:0)
实际上,
当我执行pg_dump
命令以备份我的服务器数据库(外部)时,我发生同样的错误
'/Applications/Postgres.app/Contents/Versions/9.3/bin'/pg_dump -d "<database_name>" -h <server_name> -U <db_user_name> -f <destination_path>
我通过将<server_name>
替换为我的实际服务器IP(10.1.0.18
)来解决它(解决方法)。
所以这里的问题是我的系统没有理解<server_name>
主机。
在/ private / etc / hosts文件中添加<server_name>
主机时,它可能会永久解决。
答案 5 :(得分:-1)
另一种变体:如果网络中未使用IPv6,则可以禁用它。在Windows上,IPv6服务也可以被禁用。