【问题标题】:Problem connecting to a remote database using hibernate使用休眠连接到远程数据库时出现问题
【发布时间】:2010-09-25 23:47:10
【问题描述】:

我正在尝试使用休眠连接到远程数据库(托管在 Netfirms www.netfirms.ca 如果有人好奇的话)。我的映射文件如下:

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://mysql.netfirms.ca:3306/d60549476</property>
        <property name="hibernate.connection.username">u70612250</property>
        <property name="hibernate.connection.password">******</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>

        <!-- Use the C3P0 connection pool provider -->
        <property name="hibernate.c3p0.min_size">5</property>
        <property name="hibernate.c3p0.max_size">20</property>
        <property name="hibernate.c3p0.timeout">300</property>
        <property name="hibernate.c3p0.max_statements">50</property>
        <property name="hibernate.c3p0.idle_test_period">3000</property>

        <property name="show_sql">true</property>
        <property name="format_sql">true</property>

        <!-- List of XML mapping files -->
        <mapping resource="customer.hbm.xml"/>
        <mapping resource="customerSummary.hbm.xml"/>
        <mapping resource="charity.hbm.xml"/>
        <mapping resource="charitySummary.hbm.xml"/>

    </session-factory>
</hibernate-configuration>

当我启动我的应用程序时,我得到以下打印输出:

    16 [main] INFO org.hibernate.cfg.Environment - hibernate.properties not found
    ....
    94 [main] INFO org.hibernate.cfg.Configuration - configuring from resource: /hibernate.cfg.xml
    ....
    485 [main] INFO org.hibernate.cfg.Configuration - Configured SessionFactory: null
532 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Using Hibernate built-in connection pool (not for production use!)
532 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Hibernate connection pool size: 20
547 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - autocommit mode: false
547 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://mysql.netfirms.ca:3306/d60549476
547 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - connection properties: {user=u70612250, password=****}
168719 [main] WARN org.hibernate.cfg.SettingsFactory - Could not obtain connection metadata
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION **

java.net.NoRouteToHostException
MESSAGE: No route to host: connect

STACKTRACE:

java.net.NoRouteToHostException: No route to host: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(Unknown Source)

我确保我的数据库配置为允许远程访问。我想知道这是什么原因造成的。显然,我无法与主机建立连接,但我不知道为什么。假设主机名、用户和密码正确,我是否遗漏了什么?

附录:我尝试使用与 Squirrel 相同的驱动程序进行连接,得到了完全相同的错误。

【问题讨论】:

  • 你在工作,在防火墙后面还是什么? NoRouteToHostException 通常表示无法与服务器建立网络连接。
  • 我关闭了防火墙,因为这是一个站点的建议。没什么区别。
  • 您是否尝试过使用 MySQL GUI 工具并远程登录?服务器可能不让你进出。
  • 我试过了,按照网站说应该可以远程登录,但是好像不行。

标签: java database hibernate


【解决方案1】:

事实证明,连接存在几个问题:

  1. 虽然网站说在控制面板上使用 mysql.netfirms.ca,但他们的通用说明是正确的,我应该像前面提到的其他人一样使用 mysql.netfirms.com。
  2. Netfirms 的站点出现了一些问题,显然只有我一个人注意到,来自远程计算机的连接不可用。他们之前发过道歉信,现在我可以正常连接了。

感谢大家的帮助。

【讨论】:

    【解决方案2】:

    我想第一步是检查(因为你没有说你已经尝试过),如果你可以使用一些 SQL 工具连接到数据库。比如松鼠。

    【讨论】:

      【解决方案3】:

      异常说,没有到主机的路由。这意味着您很可能甚至无法 ping 您的数据库服务器。

      阅读http://support.netfirms.com/article.php?id=694你应该在你的jdbc url中放另一个主机

      jdbc:mysql://mysql.netfirms.com:3306/d60549476

      【讨论】:

      • 其实我都试过了。在管理面板下,它说使用 .ca。如果您查看该问题的历史记录,您会看到我使用 .com 时的原始错误。如果我使用 .ca,则会收到当前错误。
      猜你喜欢
      • 2016-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多