【问题标题】:Cannot connect to database using Hibernate无法使用 Hibernate 连接到数据库
【发布时间】:2018-09-10 13:44:37
【问题描述】:

我正在开发一个来自here 的示例 Hibernate+MySQL 应用程序。尝试运行程序时无法连接到数据库。 Here 是堆栈跟踪。

hibernate.cfg.xml的内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>       
  <session-factory>
    <!-- Database connection settings -->
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="connection.url">jdbc:mysql://localhost:3306/bookstore</property>
    <property name="connection.username">root</property>
    <property name="connection.password">helloWORLD12</property>
    <property name="show_sql">true</property>

    <mapping class="net.codejava.hibernate.Book" />

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

我哪里错了?我检查了数据库用户名和密码是否正确。

【问题讨论】:

  • NullPointerException 来自您的 BookManager.java setup() 第 29 行。您可以将其添加到您的问题中吗?
  • 添加 create-droporg.hibernate.dialect.MySQLDialect 重新检查
  • 似乎有一些mysql-connector jar 版本相关的问题。你用的是同一个mysql数据库版本和java版本吗?
  • @MohammadRezaAlagheband 我试过这样做......仍然存在同样的问题。
  • @Karthik 我正在使用以下外部库:imgur.com/a/7bG89Sa

标签: java mysql xml database hibernate


【解决方案1】:

这可能是因为您使用的是旧版本的 MySQL 驱动程序。您应该尝试使用最新版本。

要获取最新版本,可以check

我认为突然间我们不应该去更高版本,因为它会导致更多问题。我刚刚更新了最新的 5.1.x 版本。您可以在此处下载或将其添加到您的 pom.xml:

 <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
</dependency>

【讨论】:

  • 我使用了最新版本的 MySQL 驱动。现在我得到以下错误跟踪:pastebin.com/N7y3iAti 我在 BookManager.java 的主函数中调用 setup(),然后是 create(),然后是 delete()。另外,我使用 MySQL 客户端创建了表。我现在哪里错了?
  • 我认为突然间我们不应该去更高版本,因为它会导致更多问题。我刚刚更新了最新的 5.1.x 版本。我已经更新了我的答案
  • 将版本更新到 5.1.47 对我有用。谢谢@Karthik。
【解决方案2】:

基于堆栈跟踪问题与似乎无法访问的服务器有关。

  1. 检查服务器是否已启动。如果可能,使用客户端连接并检查它是否已启动。
  2. 重启mysql服务器一次,检查端口是否正确。

您的配置看起来不错,应该可以工作。在服务器和端口上运行测试以检查您使用的是正确的。

【讨论】:

    【解决方案3】:

    试试这个

            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">helloWORLD12</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/bookstore</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    

    【讨论】:

      猜你喜欢
      • 2015-06-11
      • 1970-01-01
      • 1970-01-01
      • 2016-10-24
      • 1970-01-01
      • 2022-01-08
      • 2023-04-04
      • 2011-06-20
      • 1970-01-01
      相关资源
      最近更新 更多