首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误hibernate无法连接mysql数据库

错误hibernate无法连接mysql数据库
EN

Stack Overflow用户
提问于 2021-03-31 01:23:05
回答 1查看 896关注 0票数 0

描述

代码语言:javascript
运行
复制
   basically i want to implement ORM using Hibernate with mysql 8.0.23 CE, for the creation of the 
   table i have configured it in the hibernate config file to be created: 
   but i'm encountered with the problem of "Could not create connection to database server"
   as seen in the photos!

实体

代码语言:javascript
运行
复制
the representation of the table in mysql

     import javax.persistence.Entity;
     import javax.persistence.Id;

     @Entity
     public class User {

         @Id
         private int id;
         private String name;

         public int getId() {
           return id;
         }
         public void setId(int id) {
           this.id = id;
         }
         public String getName() {
           return name;
         }
         public void setName(String name) {
           this.name = name;
         }

     }

Hibernate配置文件

代码语言:javascript
运行
复制
<?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>    
      <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
      <property name="hibernate.connection.password">user</property>
      <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/users</property>
      <property name="hibernate.connection.username">user</property>
      <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
      <property name="hbm2ddl.auto">create</property>            
  </session-factory>

控制台日志

代码语言:javascript
运行
复制
   com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:
     at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     atjava.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance
     (NativeConstructorAccessorImpl.java:64)
     at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance
     (DelegatingConstructorAccessorImpl.java:45)
     at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
     at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
     at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
     at com.mysql.jdbc.Util.getInstance(Util.java:387)
     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:917)
     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:896)
     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:885)
     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860)
     at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2332)
     at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2085)
     at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:795)
     at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
     at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance
     (NativeConstructorAccessorImpl.java:64)
     at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance
     (DelegatingConstructorAccessorImpl.java:45)
     at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
     at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
     at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
     at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:400)
     at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:327)
     at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
     at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:189)
     at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl
     .getConnection
     (DriverManagerConnectionProviderImpl.java:193)
     at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare
     (SuppliedConnectionProviderConnectionHelper.java:51)
     at org.hibernate.tool.hbm2ddl.DatabaseExporter.<init>(DatabaseExporter.java:52)
     at org.hibernate.tool.hbm2ddl.SchemaExport.execute(SchemaExport.java:367)
     at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:304)
     at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:293)
     at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:487)
     at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1746)
     at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1784)
     at com.hibernate.Orm.App.main(App.java:16)
     Caused by: java.lang.NullPointerException: 
     Cannot invoke "java.util.Map.get(Object)" because "this.serverVariables" is null
     at com.mysql.jdbc.ConnectionImpl.getServerCharset(ConnectionImpl.java:3005)
     at com.mysql.jdbc.MysqlIO.sendConnectionAttributes(MysqlIO.java:1916)
     at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1845)
     at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1215)
     at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2255)
     at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2286)
     ... 23 more
     Mar 31, 2021 1:12:32 AM org.hibernate.tool.hbm2ddl.SchemaExport execute
     INFO: HHH000230: Schema export complete
     Wed Mar 31 01:12:32 WEST 2021 WARN: Establishing SSL connection without server's identity 
     verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL 
     connection must be established by default if explicit option isn't set. For compliance with 
     existing applications not using SSL the verifyServerCertificate property is set to 'false'. You 
     need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide 
     truststore for server certificate verification.
     Mar 31, 2021 1:12:32 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
     WARN: SQL Error: 0, SQLState: 08001
     Mar 31, 2021 1:12:32 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
     ERROR: Could not create connection to database server.
     and more...

   basically i want to implement ORM using Hibernate with mysql 8.0.23 CE, for the creation of the 
   table i have configured it in the hibernate config file to be created: 
   but i'm encountered with the problem of "Could not create connection to database server"
   as seen in the photos!

POM

代码语言:javascript
运行
复制
   <project xmlns="http://maven.apache.org/POM/4.0.0" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven- 
       4.0.0.xsd">

     <modelVersion>4.0.0</modelVersion>
     <groupId>com.hibernate</groupId>
     <artifactId>hibernateOrm</artifactId>
     <version>0.0.1-SNAPSHOT</version>

   <dependencies>
       <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>3.8.1</version>
         <scope>test</scope>
       </dependency>

      <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.1.6.Final</version>    
      </dependency>

      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.38</version>    
      </dependency>  
   </dependencies>

</project>

   basically i want to implement ORM using Hibernate with mysql 8.0.23 CE, for the creation of the 
   table i have configured it in the hibernate config file to be created: 
   but i'm encountered with the problem of "Could not create connection to database server"
   as seen in the photos!

代码语言:javascript
运行
复制
package com.hibernate.Orm;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class App {

  public static void main(String[] args) {
    
    User user = new User();
    user.setId(1);
    user.setName("bruno");
    Configuration config = new 
    Configuration().configure("hibernate.cfg.xml").addAnnotatedClass(User.class);
    SessionFactory sf = config.buildSessionFactory();
    Session session = sf.openSession();
    Transaction tx = session.beginTransaction();
    session.save(user);
    tx.commit();
    session.close();

  }
}

JARS使用

代码语言:javascript
运行
复制
  [1]: https://i.stack.imgur.com/3CbNu.png
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-31 02:18:19

将java连接器版本至少升级为5.1.46或更高版本,直到最新的8.0.11版本,因为旧版本有MySQL 8的问题。

代码语言:javascript
运行
复制
<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.46</version>    
      </dependency>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66880402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档