有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

postgresql Mybatis在启动时遇到“由以下原因引起:java.net.UnknownHostException:localhost”,为什么?

我正在mac上尝试一个简单的mybatis示例代码,它连接一个本地postgresql服务器。我已经用我自己的JavaJDBC测试代码测试了服务器连接,一切正常

然后我的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。阿帕奇。伊巴蒂斯。例外情况。持久性异常:

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) 个答案

  1. # 1 楼答案

    Postgres驱动程序被添加到类路径中(出现在stacktrace中的org.postgresql.core.PGStream类属于Postgres驱动程序,所以它显然就在那里)

    现在,它仍然可能是一个新问题,作为第一种手段,我建议检查您的程序,即使没有安装mybatis/postgres

    试着打开一个到localhost的url连接和一个肯定打开的端口),看看应用程序的“main”方法会发生什么

    您也可以尝试使用127.0.0.1而不是“localhost”

    如果您看到localhost不可用,那么肯定是配置问题,否则可能还有其他问题

    从你的描述来看,这听起来像是一个网络/配置问题,但由于这是一个“疑难解答”问题,我只是想提供一些“疑难解答”的想法