Я создаю приложение, используя Spring Boot JPA, я использую MySQL в качестве базы данных.
Ниже приведены мои application.properties
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
Я добавил следующие зависимости
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.17</version>
</dependency>
Когда я проверил журналы отладки, я вижу java-коннектор mysql в своем пути к классам, но все же я получаю следующие ошибки
2019-07-29 10:03:00.742 INFO 10356 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2019-07-29 10:03:00.742 INFO 10356 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1534 ms 2019-07-29 10:03:00.789 WARN 10356 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Failed to determine a suitable driver class 2019-07-29 10:03:00.789 INFO 10356 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat] 2019-07-29 10:03:00.805 INFO 10356 --- [ main] ConditionEvaluationReportLoggingListener :
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2019-07-29 10:03:00.805 ERROR 10356 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :
*************************** APPLICATION FAILED TO START
Description:
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
Reason: Failed to determine a suitable driver class
Action:
Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).






Автоконфигурация Spring Boot пытается настроить bean-компоненты автоматически на основе зависимостей, добавленных в путь к классам. Поскольку у вас есть зависимость JPA от вашего пути к классам, Spring Boot пытается автоматически настроить источник данных JPA. Проблема в том, что вы не предоставили Spring полную информацию, необходимую для выполнения автоконфигурации.
Добавьте это отсутствующее свойство в свой файл application.properties, чтобы Spring мог автоматически настроить
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
Вы также можете программно определить источник данных, используя класс DataSourceBuilder построителя служебной программы. Для этого вам необходимо указать URL-адрес базы данных, имя пользователя, пароль и информацию о драйвере SQL для создания источника данных:
@Configuration
public class DatasourceConfig {
@Bean
public DataSource datasource() {
return DataSourceBuilder.create()
.driverClassName("com.mysql.cj.jdbc.Driver")
.url("jdbc:mysql://localhost:3306/myDb")
.username("root")
.password("pass")
.build();
}
}
попробуй это spring.datasource.driver-class-name=com.mysql.jdbc.Driver. И дайте мне знать.
попробуйте изменить его на «com.mysql.cj.jdbc.Driver» для соединителя mysql версии 8.0 и выше.
@kashishverma Я попробовал ваши предложения, но, к сожалению, ничего не работает. Спасибо за вашу помощь. Позвольте мне просто удалить проект и создать новый
Пожалуйста, укажите пакеты... Мучительно найти, какой из них следует использовать... (из какого пакета DataSource?)
Это была какая-то ошибка в моей конфигурации, которую я не мог обнаружить, я заново создал тот же проект, и все заработало.
сдача:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
к:
spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/mydb
Spring Autoconfigure ищет 2 свойства для загрузки соответствующего драйвера,
На самом деле Spring Autoconfigure просто нужен spring.datasource.url, и он может получить оттуда имя класса драйвера.
У меня была такая же проблема, я решил ее, щелкнув правой кнопкой мыши проект, проект maven/update, затем вы должны выбрать свой проект и принять.
Я тоже пробовал это, но все еще продолжаю получать ту же ошибку. Я пропустил что-то еще?