SpringBoot引入JDBC,Mysql未配置数据源报错

本文介绍了SpringBoot在引入JDBC并使用Mysql时未正确配置数据源导致的问题及解决方法。主要介绍了如何排除DataSourceAutoConfiguration类来避免自动配置引发的错误。

SpringBoot引入JDBC,Mysql未配置数据源报错:Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured.

在这里插入图片描述
经查阅资料发现 :spring boot默认会加载org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
解决办法:
1:在启动类上处理:@SpringBootApplication(exclude={DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})。
2:在配置文件中处理:

Spring:
	autoconfigure:
    	exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration

这样DataSourceAutoConfiguration 就不会自动加载了

### 多数据源配置启动报错解决方案 在多数据源配置中,启动时可能会遇到多种错误,以下是一些常见的错误及解决方案: #### 1. 数据源URL到 如果在配置数据源时出现`url到`的错误,可能是由于数据源配置文件中的URL路径正确或正确加载。确保在`application.yml`或`application.properties`中正确配置了每个数据源URL、用户名和密码[^1]。 ```yaml spring: datasource: dynamic: primary: master # 设置默认数据源 strict: false # 是否严格匹配数据源名称 datasource: master: url: jdbc:mysql://localhost:3306/master_db?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver slave: url: jdbc:mysql://localhost:3306/slave_db?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver ``` #### 2. Invalid bound statement (not found) 此错误通常与MyBatis的Mapper扫描有关。需要检查以下几点: - 确保在启动类(如`Application.java`)中正确配置了`@MapperScan`注解,扫描到所有的Mapper接口。 - 检查`resources`目录下的`mapper.xml`文件是否位于`mapper`文件夹下,并且路径与`application.yml`或`application.properties`中的配置一致。 - 确保配置文件中有正确的Mapper路径配置[^2]。 ```java @MapperScan(basePackages = {"com.example.mapper", "com.example.coreMapper"}) @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` #### 3. No DataSource Set 如果使用MySQL 8.0作为数据源时出现`No DataSource Set`的错误,可能与数据库字符集和排序规则有关。尝试创建数据库时指定字符集为`utf8mb4`,并设置排序规则为`utf8mb4_unicode_ci`[^3]。 ```sql CREATE DATABASE IF NOT EXISTS `nacos_config` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` #### 4. 其他常见问题 - **依赖冲突**:确保项目中引入的依赖版本兼容。例如,`dynamic-datasource-spring-boot-starter`与Spring Boot版本匹配。 - **事务管理**:在多数据源场景下,确保事务管理器正确配置,避免跨数据源事务问题。 - **动态切换逻辑**:检查动态数据源切换逻辑是否正确实现,确保在运行时能够正确切换到目标数据源。 ```java @Service public class DynamicDataSourceService { @Autowired private DataSourceContextHolder dataSourceContextHolder; public void switchDataSource(String dataSourceName) { dataSourceContextHolder.setDataSourceType(dataSourceName); } } ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值