将 Spring-Boot 连接到 MySQL

Posted

技术标签:

【中文标题】将 Spring-Boot 连接到 MySQL【英文标题】:connection Spring-Boot to MySQL 【发布时间】:2019-07-20 14:40:36 【问题描述】:

我是使用 Spring Boot 的新手,将它连接到 mysql 数据库时出错,我已经阅读了所有教程,但仍然没有发现问题。

错误 27341 --- [主] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - 池初始化期间出现异常。 com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: 无法创建与数据库服务器的连接。 org.springframework.jdbc.support.MetaDataAccessException:不能 获取用于提取元数据的连接;嵌套异常是 org.springframework.jdbc.CannotGetJdbcConnectionException: 失败 获取 JDBC 连接;嵌套异常是 com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: 无法创建与数据库服务器的连接。在 org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:328) ~[spring-jdbc-5.1.5.RELEASE.jar:5.1.5.RELEASE]

application.properties

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://127.0.0.1:3306/db_predio?useSSL=false
spring.datasource.username = root
spring.datasource.password = 

spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1

spring.jpa.show-sql = true

spring.jpa.hibernate.ddl-auto = update

spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

pom.xml

    <dependencies>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.1.3.RELEASE</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-autoconfigure -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
            <version>2.1.3.RELEASE</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-jpa -->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
            <version>2.1.5.RELEASE</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <version>2.1.3.RELEASE</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.39</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>2.3.3</version>
            <scope>provided</scope>
        </dependency>


    </dependencies>

    <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>11</source>
                <target>11</target>
            </configuration>
        </plugin>
    </plugins>
    </build>
</project>

运行应用程序

@SpringBootApplication
@EntityScan("au.basicexpert.predio.entity")
@EnableJpaRepositories("au.basicexpert.predio.repository")
@ComponentScan("au.basicexpert.predio.controller")
public class Application 

    public static void main(String[] args) 
        SpringApplication.run(Application.class, args);
    

【问题讨论】:

0 关闭本地 MySQL 并在启用调试的情况下再次运行项目。请发布完整的日志跟踪。为什么要使用旧版本的 MySQL 连接器?除非它背后有特定的原因,否则总是要使用新版本。如果您不确定什么是最新版本,请删除该版本并让 maven 第一次管理它。 嗨,柯比,现在可以使用了!我只需要关闭 MyQSL。我不敢相信这是唯一的问题,我也实现了 MyQSL 连接器。非常感谢!! 很高兴它对你有用 如果它适合你,请投反对票 【参考方案1】:

关闭本地 MySQL 并在启用调试的情况下再次运行项目。请发布完整的日志跟踪。

为什么要使用旧版本的 MySQL 连接器?除非它背后有特定的原因,否则总是要使用新版本。如果您不确定什么是最新版本,请删除该版本并让 maven 第一次对其进行管理。

【讨论】:

以上是关于将 Spring-Boot 连接到 MySQL的主要内容,如果未能解决你的问题,请参考以下文章

使用 spring-boot 连接到 spring-batch 和应用程序数据库

Spring-boot JPA 连接到 postgres,其中在运行时提供数据库和模式

spring-boot web 应用程序在一段时间后失去连接到 MySQL / RDS 的能力

将 Spring Boot 应用程序连接到 Google Cloud 中的 MySQL 数据库

我正在尝试将我的本地 spring boot 应用程序连接到我的 heroku postgres db

如何在 Spring-boot 上启用 TLS 1.2?