Spring boot无法从数据源(mysql)确定jdbc url
Posted
技术标签:
【中文标题】Spring boot无法从数据源(mysql)确定jdbc url【英文标题】:Spring boot unable to determine jdbc url from datasouce (mysql) 【发布时间】:2018-12-25 01:19:36 【问题描述】:我正在尝试将 mysql 数据库加载到 Spring Boot 应用程序中,但是当我启动该应用程序时,我收到了这些错误消息:
2018-07-17 13:46:31.426 WARN 2120 --- [ restartedMain] o.s.b.a.orm.jpa.DatabaseLookup : Unable to determine jdbc url from datasource
org.springframework.jdbc.support.MetaDataAccessException: Could not get Connection for extracting meta-data; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection: 'url' not set
虽然我已经在application.properties
中设置了url 属性:spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
谁能帮我解决这个问题?
编辑:这是我的主要课程:
package com.randomsoft.checkoff;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
@SpringBootApplication
@EnableAutoConfiguration(exclude = DataSourceAutoConfiguration.class)
public class CheckoffApplication
public static void main(String[] args)
SpringApplication.run(CheckoffApplication.class, args);
【问题讨论】:
您的文件是命名为 application.property 还是 application.properties? 。特性。感谢您指出这一点 由于您通过“@EnableAutoConfiguration”排除属性禁用自动配置类,您可以尝试“@Configuration”而不是“@SpringBootApplication” @Sri9911 该注释是一个建议,因此我可以将其删除。使用“@Configuration”而不是“@SpringBootApplication”会混淆我所有的 bean 声明、bean 依赖注入……所以这不是一个可行的选择 【参考方案1】:您可以尝试删除 @EnableAutoConfiguration(exclude = DataSourceAutoConfiguration.class)
也尝试添加下面所有的 jdbc 属性,
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase?verifyServerCertificate=false&useSSL=false&requireSSL=false
spring.datasource.username=<username>
spring.datasource.password=<password>
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
spring.jpa.hibernate.ddl-auto=update
【讨论】:
错误消失了。谢谢你的帮助。让我运行一个 INSERT 或其他东西以确保一切正常,我会将您的答案标记为解决方案【参考方案2】:试着在你的配置类中追加这一行
@SpringBootApplication
@EnableAutoConfiguration(exclude=DataSourceAutoConfiguration.class)
【讨论】:
那行得通。我现在无法测试它,因为我遇到了休眠错误,但我想现在很好。谢谢! @adi_random 嘿,请将此答案标记为已接受,以便其他人知道它已解决并且不要浪费时间 是的,我想先检查一切是否正常,但我猜你是对的 ...对不起。错误并没有消失。当我说它有效时,我想我错过了堆栈跟踪。 错误有什么变化吗??你能用你的堆栈跟踪更新你的问题吗【参考方案3】:您应该将属性文件命名为:application.properties
或 application.yml
【讨论】:
是的,当我发布问题时,我没有意识到扩展名是 .properties。我的错。我已经更新了问题并检查了我的属性文件是否正确命名 @adi_random 你能否在找到public static void main(String args)
方法时发布你的整个课程?
我已经添加了【参考方案4】:
大多数答案建议排除DataSourceAutoConfiguration,我同意这种方法,但他们没有说的是除了通过注解@EnableAutoConfiguration(exclude=DataSourceAutoConfiguration.class)
的编程方式之外,我们还可以选择以下列方式通过属性设置它,这在注释应用程序类不是一个选项时很有用。
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
【讨论】:
以上是关于Spring boot无法从数据源(mysql)确定jdbc url的主要内容,如果未能解决你的问题,请参考以下文章
无法从 Spring Boot Docker 容器连接到本地 MySQL 数据库服务器
无法从Spring Boot Docker容器连接到本地MySQL数据库服务器
Spring Boot和MySql - 无法使用新的服务数据库用户名/密码
Docker:无法连接 Spring Boot 和 MYSQL