【问题标题】:Unable to connect to MySQL using Java Spring无法使用 Java Spring 连接到 MySQL
【发布时间】:2019-02-02 16:19:44
【问题描述】:

伙计们 3 天,我正在寻找答案,但找不到我的问题的确切答案。所以我正在做一些关于 Spring 和 Hibernate 的教程,并在尝试在 Spring Boot 项目、MySQL 数据库和 Tomcat 服务器之间建立连接时卡住了。这是我的“pom.xml”文件:

<?xml version="1.0" encoding="UTF-8"?>
  <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.bookstore</groupId>
    <artifactId>bookstore</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>Bookstore</name>
    <description>frontend part for our bookstore project</description>

    <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>1.4.3.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      <java.version>1.8</java.version>
    </properties>

    <dependencies>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
      </dependency>

      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
      </dependency>
    </dependencies>

    <build>
      <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
      </plugins>
    </build>

这是我的属性:

spring.thymeleaf.cache=false

# ===============================
# = DATA SOURCE
# ===============================

# Set here configurations for the database connection
spring.datasource.url=jdbc:mysql://localhost:3306/bookstoredatabase?autoReconnect=true&useSSL=false

# Username and secret
spring.datasource.username=root
spring.datasource.password=target

# Keep the connection alive if idle for a long time (needed in production)
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1

# ===============================
# = JPA / HIBERNATE
# ===============================

# Use spring.jpa.properties.* for Hibernate native properties (the prefix is
# stripped before adding them to the entity manager).

# Show or not log for each sql query
spring.jpa.show-sql=true

# Hibernate ddl auto (create, create-drop, update): with "update" the database
# schema will be automatically updated accordingly to java entities found in
# the project
spring.jpa.hibernate.ddl-auto = update

# Allows Hibernate to generate SQL optimized for a particular DBMS
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

我正在使用 XAMPP 的 Tomcat - 版本 7.0.56。 MySQL 服务器和连接器都是 8 版。不使用 Tomcat,我完全可以连接到任何数据库、编辑它等。

以下是发生的错误:

INFO 15816 --- [main] org.hibernate.Version: HHH000412: Hibernate Core {5.0.11.Final}
INFO 15816 --- [main] org.hibernate.cfg.Environment: HHH000206: hibernate.properties not found
INFO 15816 --- [main] org.hibernate.cfg.Environment: HHH000021: Bytecode provider name:javassist
INFO 15816 --- [main] o.hibernate.annotations.common.Version: HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
ERROR 15816 --- [main] o.a.tomcat.jdbc.pool.ConnectionPool: Unable to create initial connections of pool. com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.

完整的错误日志可见here。我已经尝试了很多东西。请帮帮我。

编辑: 好的。我已经更仔细地阅读了错误日志。我正在使用 XAMPP 版本 7.056 的 Tomcat,但 Spring 使用版本 8 启动 Tomcat。我不知道是否应该提出另一个问题,但是当我将 &lt;tomcat.version&gt;7.0.56&lt;/tomcat.version&gt; 添加到我的属性时,错误日志更改为 this

【问题讨论】:

    标签: java mysql spring tomcat


    【解决方案1】:

    对不起。我现在检查了 Trace。

    当您检查bug report 时,可能已在连接器/J 5.1.41 中修复。

    把它改成你的 pom.xml

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

    【讨论】:

    • 可能是正在使用的连接器版本。我改变了答案。你想试试吗?
    • 是的,是的,是的,这是正确的答案,非常感谢。关于连接器。在不同的端口上有 2 个 Tomcat,我不知道为什么,但我已经停止了它们,添加了您的依赖项,然后启动了应用程序,它运行良好。再次非常感谢!
    【解决方案2】:

    您是否在 mysql 上创建了名为 bookstoredatabase 的数据库? 我认为你应该将 mysql 连接器的依赖添加到 pom.xml

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

    【讨论】:

    • 我已经创建了数据库并且连接器在那里。真的不知道问题出在哪里。在教程中一切正常。我什至检查了我的代码和导师的代码两次。
    • 我知道这很愚蠢,但是您的 mysql 服务器正在指定端口上运行,对吗?你确定你已经在 mysql 上创建了一个用户名“root”和密码“target”的用户,该用户对 bookstoredatabase 具有权限?
    • 当然可以。我注意到了其他事情,请参阅我的问题的编辑。
    猜你喜欢
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 2020-09-03
    相关资源
    最近更新 更多