APIJSON icon indicating copy to clipboard operation
APIJSON copied to clipboard

[xxx] 关于混合持久化,多数据源的问题,同时使用MySQL和SQL Server,出现一些不兼容的情况

Open AFatFox opened this issue 4 months ago • 1 comments

Description

基于apijson-demo-druid,想实现通过前端控制切换不同数据库类型。实现如下:编写MySQL以及SQLServer配置,通过DemoDataSourceConfig注入MySQL和SQLServer的DruidDataSource,DemoSQLConfig配置的是SQLServer的,并改了一下DemoSQLExecutor的getConnection方法,根据apijson-boot-multi-datasource中对应的方法来改的。在请求时通过@datasource指定不同数据源,请求SQLServer的没问题,切换到MySQL时,控制台提示SQL异常,虽然确实是通过MYSQL执行的,但是语句格式还是使用的SQLServer的,请问这是我哪里编写的问题吗?

apiJson版本:7.1.5 MySQL:8.0.24 SQLServer:2022 JDK:21 windows 10

下面是配置 Image

下面是DemoDataSourceConfig Image

下面是DemoSQLConfig Image

下面是DemoSQLExecutor Image

控制台异常信息: Image

请求截图: Image

AFatFox avatar Aug 29 '25 10:08 AFatFox

@AFatFox 用 @database 指定对应数据库类型(和默认数据库类型不一致时),@datasource 只是指定提供具体的 dbURI 等数据库配置的连接(替换 DemoSQLCfong.getDBURI 等数据库连接配置),要生产适配哪种数据库类型的 SQL 都是通过 @ 指定。 如果想省掉前端传参 @database,可以直接在 getConnection 内每个连接对应 config.setDatabase

TommyLemon avatar Aug 31 '25 04:08 TommyLemon