java - Mybatis 启动时遇到“Caused by: java.net.UnknownHostException: localhost”,为什么?
问题描述
我在连接本地 postgresql 服务器的 mac 上尝试一个简单的 mybatis 示例代码。我已经用我自己的 java jdbc 测试代码测试了服务器连接,一切正常。
然后我的 Intellij mybatis maven 项目配置了“resources/postgres.properties”
jdbc.driver="org.postgresql.Driver"
jdbc.url="jdbc:postgresql://localhost:5432/postgres"
jdbc.username="postgres"
jdbc.password="password"
这是一个适用于我的 jdbc 测试代码的配置,我的“resources/mybatis.cfg.xml”具有:
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="org.postgresql.Driver" />
<property name="url" value="jdbc:postgresql:/localhost:5432/postgres" />
<property name="username" value="postgres" />
<property name="password" value="password" />
</dataSource>
</environment>
</environments>
然后在我的 mybatis 程序中,在调用 mapper 函数时,它会给出 org.apache.ibatis.exceptions.PersistenceException:
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:70)
at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:91)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:192)
... 25 more
找了一阵子,都说是因为我的/etc/hosts没有localhost配置。但实际上我有这两行:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1 localhost localhost.localdomain localhost6 localhost6.localdomain6
在我的 intellij 环境中,我已经完成了“项目结构->库->”将我的 postgre 驱动程序添加到我的项目中。
所以这似乎不是本地主机配置问题。异常可能来自哪里,我该如何排除故障和解决它?
谢谢!
解决方案
Postgres 驱动程序被添加到类路径中(出现在堆栈跟踪中的 org.postgresql.core.PGStream 类属于 postgres 驱动程序,因此它显然存在)。
现在,它仍然是一个网络问题,作为第一选择,我建议即使没有安装 mybatis/postgres 也检查你的程序
尝试打开到 localhost 的 url 连接和一些肯定打开的端口)并查看应用程序的“main”方法会发生什么。
您也可以尝试使用 127.0.0.1 而不是“localhost”
如果您看到 localhost 不可用,那么肯定是配置问题,否则也可能出现其他问题。
根据您的描述,这听起来确实像是网络/配置问题,但由于它是一个“疑难解答”问题,我只是想提供“疑难解答”的想法......