一、该问题的重现步骤是什么?
1. 定时任务方法报错,方法中是有多数据源切换查询的
2. 
3.
二、你期待的结果是什么?实际看到的又是什么?
断点处应该能查询出数据的,方法报错如上图;
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
boot版本,windows系统
四、请提供详细的错误堆栈信息,这很重要。
============== Sql Start ==============
Execute SQL : select datasource_id from blade_tenant where is_deleted = 0 and tenant_id = ''
Execute Time: 46.555ms
============== Sql End ==============
2025-10-29 10:07:08.527 ERROR 11028 --- [sync-scheduler1] o.s.c.b.c.BladeExecutorConfiguration : Unexpected scheduler exception
org.springblade.core.tenant.exception.TenantDataSourceException: Incorrect result size: expected 1, actual 0
五、若有更多详细信息,请在下面提供。
定时任务触发的时候没有request,也就无法获取到用户信息,用租户自带的数据源切换逻辑就无法实现,因为自动切换要获取用户信息的。
你这种情况可以单开一个方法,用这样手动的方式进行租户数据源的切换
try {
//切换租户数据源
DynamicDataSourceContextHolder.push(tenantId);
//这里写你的逻辑
} finally {
//释放租户数据源
DynamicDataSourceContextHolder.poll();
}push方法的传参是传租户的id吗还是@DS注解配置的数据源名?我传的@DS配置的数据源报的下图中错误

异常信息如下

你想要什么数据源,就填什么名字,如果是租户id创建的数据源就填租户id,如果是自己主动创建的就填自己创建的名字
扫一扫访问 Blade技术社区 移动端