【发布时间】:2017-07-04 04:04:02
【问题描述】:
我已经使用单个连接池实现了基于模式的多租户: Spring Boot 1.5.4、Spring 数据源、MariaDB、JPA
我已包含以下多租户文件:
CurrentTenantIdentifierResolver -- 识别当前租户
MultiTenantConnectionProvider -- 切换模式和释放连接
TenantInterceptor -- 拦截器
TenantContext -- 线程本地上下文
应用程序属性 -- 数据源属性
如果是 MYSQL(使用 mysql 驱动程序和方言): 如果我使用 MySQL 数据库,我的代码工作正常。我每次都能连接到正确的租户。
如果是 MariaDB(使用 maria DB 驱动程序和方言):
当我第一次调用服务器时,我从正确的租户(T1)获取数据。之后,如果我更改租户(T2)并进行服务器调用,我将获取第一个租户(T1)的数据,这是错误的。
我解决了这个问题。如果我在MultiTenantConnectionProvider.java 中跳过connecion.close,代码会正常工作。但是跳过connection.close 不是好方法,而且在生产环境中也行不通。
请提供一些输入,为什么相同的代码在 MySql 上运行良好但在 Maria DB 上运行不正常???
【问题讨论】:
标签: mysql hibernate spring-boot mariadb