我使用单连接池实现了基于模式的多租户: Spring Boot 1.5.4,Spring Data Source,MariaDB,JPA
我已包含以下多租户文件:
CurrentTenantIdentifierResolver
- 确定当前租户
MultiTenantConnectionProvider
- 切换架构和释放连接
TenantInterceptor
- 拦截器
TenantContext
- 线程本地上下文
应用程序属性 - 数据源属性
对于MYSQL(使用mysql驱动程序和方言): 如果我使用MySQL数据库,我的代码工作正常。我每次都能连接到正确的租户。
对于MariaDB(使用maria DB驱动程序和方言):
当我第一次拨打服务器时,我从右租户(T1)获取数据。之后,如果我更改我的租户(T2)并进行服务器调用,我将获取第一个租户(T1)的数据,这是错误的。
我找到了解决这个问题的方法。如果我在connecion.close
中跳过MultiTenantConnectionProvider.java
,代码将正常运行。但是跳过connection.close
并不是一种好方法,它在生产中不起作用。
请提供一些输入,为什么相同的代码可以正常使用MySql而不能使用Maria DB ???
答案 0 :(得分:0)
解决方案: 更新了mariadb驱动程序到版本2.0.3
<properties>
<hibernate.version>5.2.8.Final</hibernate.version>
<mariadb.version>2.0.3</mariadb.version>
</properties>