开启多租户数据库隔离,日志表放在独立的数据库中,blade-log服务启动报错

Blade 已结 1 834
kingjm
kingjm 剑圣 2021-06-04 17:58

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

  1.   把日志表单独放一个库中。 

- blade_log_api

- blade_log_error

- blade_log_usual




2.  系统开启了多租户数据库隔离

#多租户配置

tenant:

#多租户增强

enhance: true

#多租户授权保护

license: false

#动态数据源功能

dynamic-datasource: true

#动态数据源全局扫描

dynamic-global: false

#多租户字段名

column: tenant_id

#排除多租户逻辑

exclude-tables:

- blade_user

- blade_log_api

- blade_log_error

- blade_log_usual





3. 启动blade-log服务报错。


二、你期待的结果是什么?实际看到的又是什么?


我想要把日志表单独放一个数据库中存储,同时也要开启多租户的数据库隔离。


分库后,blade-log服务启动报错


三、你正在使用的是什么产品,什么版本?在什么操作系统上?


bladex 2.8.1


四、请提供详细的错误堆栈信息,这很重要。

java.sql.SQLSyntaxErrorException: Table 'blade_log.blade_tenant' doesn't exist

at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)

at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)

at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)

at com.mysql.cj.jdbc.StatementImpl.executeQuery(StatementImpl.java:1200)

at org.springblade.core.tenant.dynamic.TenantDataSourceJdbcProvider.executeStmt(TenantDataSourceJdbcProvider.java:72)

at com.baomidou.dynamic.datasource.provider.AbstractJdbcDataSourceProvider.loadDataSources(AbstractJdbcDataSourceProvider.java:84)

at com.baomidou.dynamic.datasource.DynamicRoutingDataSource.afterPropertiesSet(DynamicRoutingDataSource.java:243)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1853)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1790)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516)

at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324)

at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)

at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)

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

1条回答
  •  admin
    admin (最佳回答者)
    2021-06-07 21:23

    多租户数据库隔离必须有blade-starter-tenant依赖以及blade_tenant表,否则无法正确获取租户的配置来进行数据库隔离,如果需要分服务又分库有没有tenant表,只能通过feign去调用system的服务接口来获取数据,这样每次请求都要调用feign,性能会差很多,不推荐。

    0 讨论(1)
提交回复