【问题标题】:HIbernate Tools org.hibernate.exception.JDBCConnectionException: Error calling Driver#connectHIbernate 工具 org.hibernate.exception.JDBCConnectionException:调用 Driver#connect 时出错
【发布时间】:2019-07-12 17:28:05
【问题描述】:

我的hibernate.cfg.xml如下:

<hibernate-configuration>
 <session-factory name="TestSessionFactory">
  <property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
  <property name="hibernate.connection.password">!QAZ2wsx</property>
  <property name="hibernate.connection.url">jdbc:sqlserver://localhost;databaseName=Testing</property>
  <property name="hibernate.connection.username">sa</property>
  <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
 </session-factory>
</hibernate-configuration>

在 Hibernate Configurations 选项卡中,我选择了 Session Factory,然后出现如下错误:

!ENTRY org.hibernate.eclipse.console 4 4​​ 2019-07-13 01:20:30.359 !MESSAGE 创建 sessionfactory 时出现问题 !SUBENTRY 1 org.hibernate.eclipse.console 4 150 2019-07-13 01:20:30.359 !MESSAGE org.hibernate.exception.JDBCConnectionException:调用驱动程序时出错#connect !堆栈 0 org.hibernate.exception.JDBCConnectionException:调用 Driver#connect 时出错 在 org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:132) 在 org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator$1$1.convert(BasicConnectionCreator.java:118) 在 org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.convertSqlException(BasicConnectionCreator.java:140) 在 org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:58) 在 org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:75) 在 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:106) 在 org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111) 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234) 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206) 在 org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:260) 在 org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:94) 在 org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111) 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234) 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206) 在 org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1887) 在 org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1845) 在 org.jboss.tools.hibernate.runtime.v_4_3.internal.ConfigurationFacadeImpl.buildTargetSessionFactory(ConfigurationFacadeImpl.java:19) 在 org.jboss.tools.hibernate.runtime.common.AbstractConfigurationFacade.buildSessionFactory(AbstractConfigurationFacade.java:170) 在 org.hibernate.console.ConsoleConfiguration$5.execute(ConsoleConfiguration.java:284) 在 org.hibernate.console.execution.DefaultExecutionContext.execute(DefaultExecutionContext.java:63) 在 org.hibernate.console.ConsoleConfiguration.execute(ConsoleConfiguration.java:107) 在 org.hibernate.console.ConsoleConfiguration.buildSessionFactory(ConsoleConfiguration.java:279) 在 org.hibernate.eclipse.console.workbench.LazySessionFactoryAdapter.getChildren(LazySessionFactoryAdapter.java:43) 在 org.hibernate.eclipse.console.workbench.BasicWorkbenchAdapter.getChildren(BasicWorkbenchAdapter.java:98) 在 org.hibernate.eclipse.console.workbench.BasicWorkbenchAdapter.fetchDeferredChildren(BasicWorkbenchAdapter.java:104) 在 org.eclipse.ui.progress.DeferredTreeContentManager$1.run(DeferredTreeContentManager.java:219) 在 org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) 原因:com.microsoft.sqlserver.jdbc.SQLServerException:与主机 localhost、端口 1433 的 TCP/IP 连接失败。错误:“连接被拒绝:连接。验证连接属性。确保 SQL Server 实例正在主机上运行并在端口上接受 TCP/IP 连接。确保与端口的 TCP 连接未被防火墙阻止."。 在 com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:234) 在 com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:285) 在 com.microsoft.sqlserver.jdbc.SocketFinder.findSocket(IOBuffer.java:2431) 在 com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:656) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2440) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2103) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1950) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1162) 在 com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:735) 在 org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:55) ... 23 更多 !SUBENTRY 2 org.hibernate.eclipse.console 4 150 2019-07-13 01:20:30.360 !MESSAGE org.hibernate.exception.JDBCConnectionException:调用驱动程序时出错#connect !堆栈 0 org.hibernate.exception.JDBCConnectionException:调用 Driver#connect 时出错 在 org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:132) 在 org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator$1$1.convert(BasicConnectionCreator.java:118) 在 org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.convertSqlException(BasicConnectionCreator.java:140) 在 org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:58) 在 org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:75) 在 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:106) 在 org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111) 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234) 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206) 在 org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:260) 在 org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:94) 在 org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111) 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234) 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206) 在 org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1887) 在 org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1845) 在 org.jboss.tools.hibernate.runtime.v_4_3.internal.ConfigurationFacadeImpl.buildTargetSessionFactory(ConfigurationFacadeImpl.java:19) 在 org.jboss.tools.hibernate.runtime.common.AbstractConfigurationFacade.buildSessionFactory(AbstractConfigurationFacade.java:170) 在 org.hibernate.console.ConsoleConfiguration$5.execute(ConsoleConfiguration.java:284) 在 org.hibernate.console.execution.DefaultExecutionContext.execute(DefaultExecutionContext.java:63) 在 org.hibernate.console.ConsoleConfiguration.execute(ConsoleConfiguration.java:107) 在 org.hibernate.console.ConsoleConfiguration.buildSessionFactory(ConsoleConfiguration.java:279) 在 org.hibernate.eclipse.console.workbench.LazySessionFactoryAdapter.getChildren(LazySessionFactoryAdapter.java:43) 在 org.hibernate.eclipse.console.workbench.BasicWorkbenchAdapter.getChildren(BasicWorkbenchAdapter.java:98) 在 org.hibernate.eclipse.console.workbench.BasicWorkbenchAdapter.fetchDeferredChildren(BasicWorkbenchAdapter.java:104) 在 org.eclipse.ui.progress.DeferredTreeContentManager$1.run(DeferredTreeContentManager.java:219) 在 org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) 原因:com.microsoft.sqlserver.jdbc.SQLServerException:与主机 localhost、端口 1433 的 TCP/IP 连接失败。错误:“连接被拒绝:连接。验证连接属性。确保 SQL Server 实例正在主机上运行并在端口上接受 TCP/IP 连接。确保与端口的 TCP 连接未被防火墙阻止."。 在 com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:234) 在 com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:285) 在 com.microsoft.sqlserver.jdbc.SocketFinder.findSocket(IOBuffer.java:2431) 在 com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:656) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2440) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2103) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1950) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1162) 在 com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:735) 在 org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:55) ... 23 更多 !SUBENTRY 2 org.hibernate.eclipse.console 4 150 2019-07-13 01:20:30.361 !MESSAGE com.microsoft.sqlserver.jdbc.SQLServerException: 到主机 localhost 的 TCP/IP 连接,端口 1433 失败。错误:“连接被拒绝:连接。验证连接属性。确保 SQL Server 实例正在主机上运行并在端口上接受 TCP/IP 连接。确保与端口的 TCP 连接未被防火墙阻止."。 !堆栈 0 com.microsoft.sqlserver.jdbc.SQLServerException:与主机 localhost、端口 1433 的 TCP/IP 连接失败。错误:“连接被拒绝:连接。验证连接属性。确保 SQL Server 实例正在主机上运行并在端口上接受 TCP/IP 连接。确保与端口的 TCP 连接未被防火墙阻止."。 在 com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:234) 在 com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:285) 在 com.microsoft.sqlserver.jdbc.SocketFinder.findSocket(IOBuffer.java:2431) 在 com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:656) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2440) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2103) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1950) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1162) 在 com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:735) 在 org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:55) 在 org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:75) 在 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:106) 在 org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111) 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234) 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206) 在 org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:260) 在 org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:94) 在 org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111) 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234) 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206) 在 org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1887) 在 org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1845) 在 org.jboss.tools.hibernate.runtime.v_4_3.internal.ConfigurationFacadeImpl.buildTargetSessionFactory(ConfigurationFacadeImpl.java:19) 在 org.jboss.tools.hibernate.runtime.common.AbstractConfigurationFacade.buildSessionFactory(AbstractConfigurationFacade.java:170) 在 org.hibernate.console.ConsoleConfiguration$5.execute(ConsoleConfiguration.java:284) 在 org.hibernate.console.execution.DefaultExecutionContext.execute(DefaultExecutionContext.java:63) 在 org.hibernate.console.ConsoleConfiguration.execute(ConsoleConfiguration.java:107) 在 org.hibernate.console.ConsoleConfiguration.buildSessionFactory(ConsoleConfiguration.java:279) 在 org.hibernate.eclipse.console.workbench.LazySessionFactoryAdapter.getChildren(LazySessionFactoryAdapter.java:43) 在 org.hibernate.eclipse.console.workbench.BasicWorkbenchAdapter.getChildren(BasicWorkbenchAdapter.java:98) 在 org.hibernate.eclipse.console.workbench.BasicWorkbenchAdapter.fetchDeferredChildren(BasicWorkbenchAdapter.java:104) 在 org.eclipse.ui.progress.DeferredTreeContentManager$1.run(DeferredTreeContentManager.java:219) 在 org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

我的sql server数据库名是Testing,在我的本地PC上运行,用户名=sa 密码=!QAZ2wsx 服务器名称为 KEI-PC\SQLEXPRESS
我下载了mssql-jdbc-7.2.2.jre8.jar,可以在我的项目Referenced Libraries中看到com.microsoft.sqlserver.jdbc.SQLServerDriver.class这个类,

那么有什么问题呢?

【问题讨论】:

    标签: sql-server hibernate jdbc


    【解决方案1】:

    OK,终于找到了,使用的端口是65064,不是默认的1433。 所以正确的hibernate.cfg.xml应该如下:

    <hibernate-configuration>
     <session-factory name="TestSessionFactory">
      <property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
      <property name="hibernate.connection.password">!QAZ2wsx</property>
      <property name="hibernate.connection.url">jdbc:sqlserver://localhost:65064;databaseName=Testing</property>
      <property name="hibernate.connection.username">sa</property>
      <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
     </session-factory>
    </hibernate-configuration>
    

    【讨论】:

    • 这也可能意味着您的 SQL Server 实例正在使用动态端口,这可能意味着它将在重新启动后使用不同的端口。
    • 哦,那如何修复它以使用默认端口 1433?
    • 在 Sql Server 配置管理器中,您的实例的 TCP/IP 协议的属性。
    猜你喜欢
    • 2014-11-23
    • 1970-01-01
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多