Skip to content

新增数据源问题 #264

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
EdisonKon opened this issue Jul 6, 2021 · 5 comments
Closed

新增数据源问题 #264

EdisonKon opened this issue Jul 6, 2021 · 5 comments

Comments

@EdisonKon
Copy link

环境信息

  • 系统: mac
  • JDK: 1.8
  • 数据库: mysql,doris
  • APIJSON: 4.7.0

问题描述

我新增了一个doris的数据源, 新增数据源没问题, 但是DemoSQLExecutor中getConnection最后调用AbstractSQLExecutor的getConnection
我认为如下这一行存疑,应该是getDatasource()
this.connection = (Connection)this.connectionMap.get(config.getDatabase());
因为根据DemoSQLExecutor中connectionMap的key是数据源类型,而不是数据库类型

错误信息

image

@TommyLemon
Copy link
Collaborator

TommyLemon commented Jul 6, 2021

database 和 datasource 都可以作为数据源的标识。
但 database 仅限 MYSQL, POSTGRESQL, ORACLE, SQLSERVER, DB2;
而 datasource 可以是一个任意 String ,完全由业务定义。

这个 Demo 里因为用了 Druid, HikariCP 等连接池连接同一个 database,所以用 datasource 区分。

为了更好地兼容混合使用场景,腾讯某同事(也是 APIJSON 的长期用户)已经把 AbstractSQLExecutor.getConnection 中仅用 database 区分改为了 database + "-" + datasource
#262

@EdisonKon
Copy link
Author

既然是这样,那我觉得是不是应该将database和datasource都取一次值,然后再判空呢?
因为database没法自定义,只能是那几个值,datasource又不适用,导致永远无法使用到自己的数据源
解决办法:
1.在自己实现的AbstractSQLExecutor子类中重写父类方法中的所有内容
2.AbstractSQLExecutor子类中setDatabase的值...(这个方法不好)
3.作者大佬修改取database为database和datasource

@TommyLemon
Copy link
Collaborator

为什么 datasource 会不适用呢?这个在子类重写方法,完全是你们自己业务定义的,和数据源想怎么映射就怎么映射

@EdisonKon
Copy link
Author

为什么 datasource 会不适用呢?这个在子类重写方法,完全是你们自己业务定义的,和数据源想怎么映射就怎么映射

不是不适用,字错了,是没有使用上,父类中没用到这个值,看一下我第一句话的描述

@EdisonKon
Copy link
Author

看到了#262,关了这个issue

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants