定时任务方法报错,方法中是有多数据源切换查询的

Blade 未结 1 24

一、该问题的重现步骤是什么?

1. 定时任务方法报错,方法中是有多数据源切换查询的image.png

2. image.png

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

五、若有更多详细信息,请在下面提供。

1条回答
  • 定时任务触发的时候没有request,也就无法获取到用户信息,用租户自带的数据源切换逻辑就无法实现,因为自动切换要获取用户信息的。

    你这种情况可以单开一个方法,用这样手动的方式进行租户数据源的切换

    try {
        //切换租户数据源
        DynamicDataSourceContextHolder.push(tenantId);
        //这里写你的逻辑
        
    } finally {
        //释放租户数据源
        DynamicDataSourceContextHolder.poll();
    }


    作者追问:3小时前

    push方法的传参是传租户的id吗还是@DS注解配置的数据源名?我传的@DS配置的数据源报的下图中错误

    image.png

    作者追问:2小时前

    异常信息如下

    image.png

    回答: 2小时前

    你想要什么数据源,就填什么名字,如果是租户id创建的数据源就填租户id,如果是自己主动创建的就填自己创建的名字

    0 讨论(0)
提交回复