Mybatis在启动时会碰到“原因:java.net.UnknownHostException:本地主机”,为什么?

时间:2018-11-04 04:51:10

标签: java postgresql exception localhost mybatis

我正在Mac上尝试连接本地Postgresql服务器的简单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没有本地主机配置。但实际上我有以下两行:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1 localhost localhost.localdomain localhost6 localhost6.localdomain6

在我的intellij环境中,我已经完成了“项目结构->库->”,将postgre驱动程序添加到项目中。

因此,这似乎不是本地主机配置问题。异常可能来自哪里,如何解决并解决它?

谢谢!

1 个答案:

答案 0 :(得分:1)

Postgres驱动程序被添加到类路径中(出现在stacktrace中的org.postgresql.core.PGStream类属于postgres驱动程序,因此很明显)。

现在,它仍然是一个网络问题,我建议即使没有安装mybatis / postgres的情况也要检查一下程序,这是第一个方法

尝试打开一个到localhost的url连接,并打开一个肯定已打开的端口),然后从应用程序的“ main”方法查看会发生什么情况。

您也可以尝试使用127.0.0.1代替“ localhost”

如果您看到本地主机不可用,则可以肯定是配置问题,否则也可能发生其他情况。

从您的描述来看,这听起来确实像是网络/配置问题,但由于存在“故障排除”问题,我只是想提供“故障排除”的想法...