无法将我的SpringBoot API连接到MYSQL数据库

时间:2020-03-26 21:36:53

标签: java mysql spring hibernate spring-boot

我设法将我的应用程序与HSQLDB连接起来,并使其正常工作。但是,将它连接到MySQL时遇到了一些麻烦。

这是我的堆栈跟踪:

应用程序运行失败

org.springframework.beans.factory.BeanCreationException:在类路径资源中定义名称为'entityManagerFactory'的bean创建错误 [org / springframework / boot / autoconfigure / orm / jpa / HibernateJpaConfiguration.class] :初始化方法的调用失败; 嵌套的异常是javax.persistence.PersistenceException:[PersistenceUnit:默认]无法构建Hibernate SessionFactory;无法创建Hibernate SessionFactory。嵌套的异常是org.hibernate.exception.GenericJDBCException:无法打开JDBC连接以执行DDL 在上org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796)〜[spring-beans-5.2.4.RELEASE.jar:5.2.4.RELEASE] 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:595)〜[spring-beans-5.2.4.RELEASE.jar:5.2.4.RELEASE] 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517)〜[spring-beans-5.2.4.RELEASE.jar:5.2.4.RELEASE] 在org.springframework.beans.factory.support.AbstractBeanFactory.lambda $ doGetBean $ 0(AbstractBeanFactory.java:323)〜[spring-beans-5.2.4.RELEASE.jar:5.2.4.RELEASE] 在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)〜[spring-beans-5.2.4.RELEASE.jar:5.2.4.RELEASE] 在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321)〜[spring-beans-5.2.4.RELEASE.jar:5.2.4.RELEASE] 在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)〜[spring-beans-5.2.4.RELEASE.jar:5.2.4.RELEASE] 在org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1108)〜[spring-context-5.2.4.RELEASE.jar:5.2.4.RELEASE] 在org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:868)〜[spring-context-5.2.4.RELEASE.jar:5.2.4.RELEASE] 在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550)〜[spring-context-5.2.4.RELEASE.jar:5.2.4.RELEASE] 在org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)〜[spring-boot-2.3.0.M3.jar:2.3.0.M3] 在org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758)〜[spring-boot-2.3.0.M3.jar:2.3.0.M3] 在org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750)〜[spring-boot-2.3.0.M3.jar:2.3.0.M3] 在org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)〜[spring-boot-2.3.0.M3.jar:2.3.0.M3] 在org.springframework.boot.SpringApplication.run(SpringApplication.java:315)〜[spring-boot-2.3.0.M3.jar:2.3.0.M3] 在org.springframework.boot.SpringApplication.run(SpringApplication.java:1237)〜[spring-boot-2.3.0.M3.jar:2.3.0.M3] 在org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)〜[spring-boot-2.3.0.M3.jar:2.3.0.M3] 在com.example.Demo.DemoApplication.main(DemoApplication.java:25)〜[classes /:na] 在java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法)〜[na:na] 在java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)〜[na:na] 在java.base / jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)〜[na:na] 在java.base / java.lang.reflect.Method.invoke(Method.java:564)〜[na:na] 在org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)〜[spring-boot-devtools-2.3.0.M3.jar:2.3.0.M3] 原因:javax.persistence.PersistenceException:[PersistenceUnit:默认]无法构建Hibernate SessionFactory;无法创建Hibernate SessionFactory。嵌套的异常是 org.hibernate.exception.GenericJDBCException:无法打开JDBC连接以执行DDL 在org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:403)〜[spring-orm-5.2.4.RELEASE.jar:5.2.4.RELEASE] 在org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:378)〜[spring-orm-5.2.4.RELEASE.jar:5.2.4.RELEASE] 在org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341)〜[spring-orm-5.2.4.RELEASE.jar:5.2.4.RELEASE] 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1855)〜[spring-beans-5.2.4.RELEASE.jar:5.2.4.RELEASE] 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1792)〜[spring-beans-5.2.4.RELEASE.jar:5.2.4.RELEASE] ...省略了22个通用框架 由以下原因引起:org.hibernate.exception.GenericJDBCException:无法打开JDBC连接以执行DDL 在org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:47)〜[hibernate-core-5.4.12.Final.jar:5.4.12.Final] 在org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113)〜[hibernate-core-5.4.12.Final.jar:5.4.12.Final] 在org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99)〜[hibernate-core-5.4.12.Final.jar:5.4.12.Final] 在org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl.getIsolatedConnection(DdlTransactionIsolatorNonJtaImpl.java:69)〜[hibernate-core-5.4.12.Final.jar:5.4.12.Final] 在org.hibernate.tool.schema.internal.exec.ImprovedExtractionContextImpl.getJdbcConnection(ImprovedExtractionContextImpl.java:60)〜[hibernate-core-5.4.12.Final.jar:5.4.12.Final] 在org.hibernate.tool.schema.internal.exec.ImprovedExtractionContextImpl.getJdbcDatabaseMetaData(ImprovedExtractionContextImpl.java:67)〜[hibernate-core-5.4.12.Final.jar:5.4.12.Final] 在org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl.getTables(InformationExtractorJdbcDatabaseMetaDataImpl.java:333)〜[hibernate-core-5.4.12.Final.jar:5.4.12.Final] 在org.hibernate.tool.schema.extract.internal.DatabaseInformationImpl.getTablesInformation(DatabaseInformationImpl.java:120)〜[hibernate-core-5.4.12.Final.jar:5.4.12.Final] 在org.hibernate.tool.schema.internal.GroupedSchemaMigratorImpl.performTablesMigration(GroupedSchemaMigratorImpl.java:65)〜[hibernate-core-5.4.12.Final.jar:5.4.12.Final] 在org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration(AbstractSchemaMigrator.java:207)〜[hibernate-core-5.4.12.Final.jar:5.4.12.Final] 在org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:114)〜[hibernate-core-5.4.12.Final.jar:5.4.12.Final] 在org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:184)〜[hibernate-core-5.4.12.Final.jar:5.4.12.Final] 在org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:73)〜[hibernate-core-5.4.12.Final.jar:5.4.12.Final] 在org.hibernate.internal.SessionFactoryImpl。(SessionFactoryImpl.java:314)〜[hibernate-core-5.4.12.Final.jar:5.4.12.Final] 在org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:468)〜[hibernate-core-5.4.12.Final.jar:5.4.12.Final] 在org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1237)〜[hibernate-core-5.4.12.Final.jar:5.4.12.Final] 在org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58)〜[spring-orm-5.2.4.RELEASE.jar:5.2.4.RELEASE] 在org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365)〜[spring-orm-5.2.4.RELEASE.jar:5.2.4.RELEASE] 在org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:391)〜[spring-orm-5.2.4.RELEASE.jar:5.2.4.RELEASE] ...省略了26个通用框架 由以下原因引起:java.sql.SQLException:用户'thalysmg'@'localhost'的访问被拒绝 在com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)〜[mysql-connector-java-8.0.19.jar:8.0.19] 在com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)〜[mysql-connector-java-8.0.19.jar:8.0.19] 在com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)〜[mysql-connector-java-8.0.19.jar:8.0.19] 在com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:836)〜[mysql-connector-java-8.0.19.jar:8.0.19] 在com.mysql.cj.jdbc.ConnectionImpl。(ConnectionImpl.java:456)〜[mysql-connector-java-8.0.19.jar:8.0.19] 在com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246)〜[mysql-connector-java-8.0.19.jar:8.0.19] 在com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:197)〜[mysql-connector-java-8.0.19.jar:8.0.19] 在com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)〜[HikariCP-3.4.2.jar:na] 在com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:354)〜[HikariCP-3.4.2.jar:na] 在com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:202)〜[HikariCP-3.4.2.jar:na] 在com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:473)〜[HikariCP-3.4.2.jar:na] 在com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:554)〜[HikariCP-3.4.2.jar:na] 在com.zaxxer.hikari.pool.HikariPool。(HikariPool.java:115)〜[HikariCP-3.4.2.jar:na] 在com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)〜[HikariCP-3.4.2.jar:na] 在org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122)〜[hibernate-core-5.4.12.Final.jar:5.4.12.Final] 在org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator $ ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:180)〜[hibernate-core-5.4.12.Final.jar:5.4.12.Final] 在org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl.getIsolatedConnection(DdlTransactionIsolatorNonJtaImpl.java:43)〜[hibernate-core-5.4.12.Final.jar:5.4.12.Final]

我的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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.0.M3</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>Demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Demo</name>
<description>Demo project for Spring Boot</description>

<properties>
    <java.version>14</java.version>
</properties>

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

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
    </dependency>

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

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.hsqldb</groupId>
        <artifactId>hsqldb</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

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

<repositories>
    <repository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/milestone</url>
    </repository>
</repositories>
<pluginRepositories>
    <pluginRepository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/milestone</url>
    </pluginRepository>
</pluginRepositories>

这是我的application.properties文件:

**spring.datasource.url** = jdbc:mysql://localhost:3306/springbootdb?useSSL=false
**spring.datasource.username** = thalysmg
**spring.datasource.password** =
## Hibernate Properties
**spring.jpa.properties.hibernate.dialect** = org.hibernate.dialect.MySQL5InnoDBDialect
**spring.jpa.hibernate.ddl-auto = update**

如果我没记错,我将MySQL用户配置为与ubuntu中的系统用户相同,这样我就可以使用“ mysql -u thalysmg”启动MySQL控制台,而不必输入密码。我已经尝试过使用“ root”而不是“ thalysmg”,并且尝试了使用和不使用密码的情况。我到处都在寻找解决方案,但没有成功。希望任何人都能帮助我!

1 个答案:

答案 0 :(得分:1)

为什么在application.properties中使用星号?删除它们

spring.datasource.url=jdbc:mysql://localhost:3306/springbootdb?useSSL=false
spring.datasource.username=thalysmg
spring.datasource.password=
## Hibernate Properties
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.ddl-auto=update