Spring Boot JPA MySQL:无法确定合适的驱动程序类。
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
我已经添加了以下依赖项:
org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-data-jpa mysql mysql-connector-java 8.0.17
当我检查调试日志时,我可以看到MySQL的Java连接器在我的类路径中,但我仍然遇到以下错误:
2019-07-29 10:03:00.742 INFO 10356 --- [ main]
o.a.c.c.C.[Tomcat].[localhost].[/] : 正在初始化Spring内嵌Web应用程序上下文 2019-07-29 10:03:00.742 INFO 10356 ---
[ main] o.s.web.context.ContextLoader : 根Web应用程序上下文:初始化完成,用时1534毫秒 2019-07-29
10:03:00.789 WARN 10356 --- [ main]
ConfigServletWebServerApplicationContext : 初始化上下文时遇到异常-取消刷新尝试:
org.springframework.beans.factory.UnsatisfiedDependencyException:
创建bean时出错,名称为
'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration':
通过构造函数参数0表达的不满足的依赖关系;
嵌套异常为org.springframework.beans.factory.BeanCreationException:
创建bean时出错,名称为'dataSource',定义在类路径资源中
[org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]:
通过工厂方法实例化'com.zaxxer.hikari.HikariDataSource'时出错;
嵌套异常为org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException:
无法确定合适的驱动程序类 2019-07-29 10:03:00.789
INFO 10356 --- [ main]
o.apache.catalina.core.StandardService : 停止服务[Tomcat]
2019-07-29 10:03:00.805 INFO 10356 --- [ main]
ConditionEvaluationReportLoggingListener :
启动应用程序上下文时出错。要显示条件报告,请使用'debug'模式重新运行您的应用程序。 2019-07-29 10:03:00.805
ERROR 10356 --- [ main]
o.s.b.d.LoggingFailureAnalysisReporter :
*************************** 应用程序启动失败
描述:
无法配置数据源:未指定'url'属性,且无法配置嵌入式数据源。
原因:无法确定合适的驱动程序类
操作:
考虑以下内容:
如果您想使用嵌入式数据库(H2、HSQL或Derby),请将其放在类路径上。
如果您需要从特定配置文件中加载数据库设置,可能需要激活它(当前没有激活的配置文件)。
(Spring Boot JPA MySQL: Failed to determine a suitable driver class)这个问题的出现的原因是因为在Spring Boot的自动配置中,它会根据类路径上添加的依赖自动配置相应的bean。由于在类路径上添加了JPA依赖,所以Spring Boot尝试自动配置一个JPA的数据源。问题在于,你没有给Spring提供完成自动配置所需的完整信息。
解决方法有两种:
1. 在application.properties
文件中添加缺少的属性,这样Spring就可以进行自动配置:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
2. 另一种方法是通过使用实用程序构建器类DataSourceBuilder来以编程方式定义数据源。为此,你需要提供数据库URL、用户名、密码和SQL驱动程序的信息来创建你的数据源:
public class DatasourceConfig { 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
。
- 如果使用的是MySQL连接器版本8.0及以上,尝试将其更改为com.mysql.cj.jdbc.Driver
。
如果以上方法仍然无效,可以尝试删除项目并创建一个新的项目。
需要注意的是,如果出现找不到包的情况,可以查找DataSource
类所在的包,并进行相应的导入。