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.propertiesapplication.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

无法从 Spring Boot Docker 容器连接 mysql Docker 容器

无法使用Spring Boot创建一个mysql数据库