有线问题。我写了一个scala程序,它将连接到本地postgresql数据库。这个程序在几个星期前运行良好,但是当我今天运行它时,它会抛出异常:
Caused by: java.net.UnknownHostException: localhost
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at org.postgresql.core.PGStream.<init>(PGStream.java:68)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:144)
我将连接网址更改为&#34; 127.0.0.1&#34;,它会抛出
Caused by: java.net.UnknownHostException: 127.0.0.1
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at org.postgresql.core.PGStream.<init>(PGStream.java:68)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:144)
... 16 more
在这两种情况下,连接网址为:
jdbc:postgresql://localhost:5432/readinglist
jdbc:postgresql://127.0.0.1:5432/readinglist
其他信息可能有用:
我可以使用&#34; - host = localhost&#34;连接到本地postgresql数据库。我计算机上的shell选项
我的电脑是mac book air,没有vm或docker正在运行
将连接URL更改为远程数据库并且运行正常
我在IDEA和shell中运行程序,两者都无法连接到本地数据库
重新启动计算机无法正常工作
添加或评论&#34; 127.0.0.1 localhost&#34;在/ etc / hosts中然后重新启动无法正常工作
如果您愿意,可以提供更多信息。
所以我想知道什么会使程序无法知道&#34; localhost&#34;或&#34; 127.0.0.1&#34;,或者在不知道真正原因的情况下,我还能做些什么来解决它?
答案 0 :(得分:1)
您上次工作时是否碰巧添加了SOCKS代理?查看堆栈跟踪:
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
JVM正在使用SOCKS代理,该代理显然无法解析localhost。尝试从网络配置中删除SOCKS代理。根据我的经验,Java与SOCKS有点不同。
答案 1 :(得分:0)
这听起来像是我刚刚解决的类似问题。事实证明,这是ShadowsocksX-R阻止了PostgreSQL与scala程序之间的连接。您可以查看是否已安装ShadowsocksX-R或任何VPN。
这是ShadowsocksX-R版本,在我的Mac上引起了问题: screenshot of ShadowsocksX-R version