Spring Boot JPA MySQL: не удалось определить подходящий класс драйвера

Я создаю приложение, используя 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).

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
2
0
32 525
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Автоконфигурация 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();
    }
}

Я тоже пробовал это, но все еще продолжаю получать ту же ошибку. Я пропустил что-то еще?

Anuj Mehta 29.07.2019 07:57

попробуй это spring.datasource.driver-class-name=com.mysql.jdbc.Driver. И дайте мне знать.

rimonmostafiz 29.07.2019 08:09

попробуйте изменить его на «com.mysql.cj.jdbc.Driver» для соединителя mysql версии 8.0 и выше.

kashish verma 29.07.2019 08:20

@kashishverma Я попробовал ваши предложения, но, к сожалению, ничего не работает. Спасибо за вашу помощь. Позвольте мне просто удалить проект и создать новый

Anuj Mehta 29.07.2019 09:15

Пожалуйста, укажите пакеты... Мучительно найти, какой из них следует использовать... (из какого пакета DataSource?)

Itération 122442 13.10.2020 11:17
Ответ принят как подходящий

Это была какая-то ошибка в моей конфигурации, которую я не мог обнаружить, я заново создал тот же проект, и все заработало.

сдача:

spring.datasource.url=jdbc:mysql://localhost:3306/mydb

к:

spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/mydb

У меня тоже была эта пробема. Мое решение: открыть настройки модуля, выбрать ресурсы, щелкнуть правой кнопкой мыши и выбрать «Проверить ресурсы». Тогда это решено.

setting page

Spring Autoconfigure ищет 2 свойства для загрузки соответствующего драйвера,

  1. spring.datasource.driverClassName (в этом случае значение будет «com.mysql.cj.jdbc.Driver» из соединителя MySQL 4.4.1.3 и выше)
  2. spring.datasource.url (в данном случае это jdbc:mysql://localhost:3306/mydb)

На самом деле Spring Autoconfigure просто нужен spring.datasource.url, и он может получить оттуда имя класса драйвера.

У меня была такая же проблема, я решил ее, щелкнув правой кнопкой мыши проект, проект maven/update, затем вы должны выбрать свой проект и принять.

Другие вопросы по теме