【问题标题】:unable JDBC CONNECT to jdbc:mysql//localhost:3306/database无法通过 JDBC 连接到 jdbc:mysql//localhost:3306/database
【发布时间】:2019-02-06 22:40:15
【问题描述】:

我搜索了所有来解决这个问题,但我仍然有那个,我不知道是什么......

mysql版本是5.7,hibernate是5.2.8。最后,我的sql连接器是5.1.2。

我正在使用 STS IDE

pom.xml

<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example</groupId>
  <artifactId>hibernate</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>hibernate</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>


  <dependencies>
  <dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-jdbc</artifactId>
    <version>9.0.0.M21</version>
</dependency>
  <dependency>
    <groupId>com.sun.activation</groupId>
    <artifactId>javax.activation</artifactId>
    <version>1.2.0</version>
</dependency>
  <dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.4.0-b180725.0644</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-core</artifactId>
    <version>2.3.0.1</version>
</dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>

     <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>ejb3-persistence</artifactId>
            <version>1.0.2.GA</version>
        </dependency>

    <!-- <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-annotations</artifactId>
        <version>3.5.6-Final</version>
    </dependency> -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.2</version>
    </dependency>

    <!-- <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-commons-annotations</artifactId>
            <version>3.2.0.Final</version>
        </dependency> -->

    <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
       <version>1.7.5</version>
   </dependency>
   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-simple</artifactId>
       <version>1.6.4</version>
   </dependency>

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

  </dependencies>

</project>

hibernate.cfg.xml

我认为问题出在这里,我猜是版本,但在我的调查中,我读到的是 JDBC 未安装,但我安装了与 5.7 mysql 兼容的连接器 8.0.12.jar。

<?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.cj.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql//localhost:3306/database</property>
        <property name="hibernate.connection.username">username</property>
        <property name="hibernate.connection.password">password</property>

        <!-- Disable the second-level cache -->
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>


    <!-- JDBC connection pool (use the built-in) -->
    <property name="connection_pool_size">true</property>

        <!-- SQL dialect -->
    <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
    <!-- Echo all executed SQL to stdout -->
    <property name="hibernate.show_sql">true</property>

    <!-- Enable Hibernate's automatic session context management -->
        <property name="hibernate.current_session_context_class">thread</property>


        <mapping class="com.example.hibernate.model.SocialMedia" />
        <mapping class="com.example.hibernate.model.Course" />
        <mapping class="com.example.hibernate.model.Teacher" />
        <mapping class="com.example.hibernate.model.TeacherSocialMedia" />
    </session-factory>
</hibernate-configuration>

配置

SessionFactory sessionFactory;
           Configuration configuration = new Configuration();
          configuration.configure("hibernate.cfg.xml");
          sessionFactory = configuration.buildSessionFactory();
          Session session = sessionFactory.openSession();

错误...

Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

还有……

Unable to make JDBC Connection [jdbc:mysql//localhost:3306/database]

【问题讨论】:

  • 查看jdbc url,jdbc:mysql后面不应该有多余的冒号吗?或者休眠在这方面有所不同...dev.mysql.com/doc/connector-j/8.0/en/…
  • 我试着在后面加上一些字符串?但错误仍然出现,我在其他地方搜索,发现不是在?之后放置字符串,将 default_time_zone="+03:00" 添加到 mysql config [mysqld] 并解决该问题,但问题是 jsbc:mysql: .. 。 感谢您的帮助。问候!

标签: java hibernate maven jdbc ide


【解决方案1】:

您在连接 URL 中的mysql 之后错过了:。正确的应该看起来像jdbc:mysql://localhost:3306/database

【讨论】:

    【解决方案2】:

    尝试使用,

    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-21
      • 2015-06-03
      • 1970-01-01
      • 1970-01-01
      • 2015-12-25
      • 2021-11-13
      • 1970-01-01
      相关资源
      最近更新 更多