【问题标题】:How can I specify the current schema on quarkus datasource?如何在 quarkus 数据源上指定当前模式?
【发布时间】:2021-09-10 10:56:16
【问题描述】:

您好,我正在尝试配置 quarkus 以连接到 oracle 数据库。使用当前配置,我可以连接到数据库,但无法指定当前架构。

我按照文档并尝试使用 new-connection-sql 来设置当前架构。但这似乎不起作用。

quarkus.datasource.mydatasource.new-connection-sql=ALTER SESSION SET CURRENT_SCHEMA=SCHEMA_NAME

这是我的 application.properties 文件

quarkus.datasource.mydatasource.db-kind=oracle
quarkus.datasource.mydatasource.jdbc.driver=oracle.jdbc.driver.OracleDriver
quarkus.datasource.mydatasource.jdbc.url=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.15.73.140)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=SN)))
quarkus.datasource.mydatasource.jdbc.min-size=3
quarkus.datasource.mydatasource.jdbc.max-size=20
quarkus.datasource.mydatasource.username=username
quarkus.datasource.mydatasource.password=password
quarkus.datasource.mydatasource.new-connection-sql=ALTER SESSION SET CURRENT_SCHEMA=SCHEMA_NAME

这可能是什么问题?

谢谢。

【问题讨论】:

  • 我不知道,我什至从未听说过“夸库斯”。但是:如果您可以连接到数据库,那也是您的“当前”模式,不是吗?看起来您好像想要更改会话并将另一个模式设置为当前模式。解决方法怎么样?直接连接到那个“新的”/“不同的”模式,然后它就会变成最新的,这样你就可以避免 ALTER SESSION。顺便说一句,也许您的问题与 command 作为 DDL 有关。例如,在 Oracle 中,要从 PL/SQL 运行它,您需要使用动态 SQL。也许“夸库斯”也需要类似的东西?
  • 您想通过更改 current_schema 来具体完成什么?这是为了安全、方便还是其他原因?
  • 实际上两者兼而有之。我所有的数据库对象都属于一个模式。因此,当用户登录时,我们需要设置架构以便能够访问数据库对象。

标签: oracle jdbc quarkus connection-pool


【解决方案1】:

如果您将 jdbc 子路径名添加到属性中,这将正常工作

quarkus.datasource.mydatasource.jdbc.new-connection-sql=ALTER SESSION SET CURRENT_SCHEMA=SCHEMA_NAME

这里的文档有点误导。

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:

您可以尝试在连接 url 中设置架构。但是您要归档的内容,基本上是将每个用户请求路由到特定模式,您应该通过这种方式检查hibernate multitenancy support,您可以将每个请求路由到您想要的数据库,但要注意您可以使用的参数的限制了解将您的请求路由到哪里。

同时检查hibernate catalog and schema configuration parameters

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 2020-08-07
    • 1970-01-01
    相关资源
    最近更新 更多