在 JDBC 连接 URL 中提供两个模式名称
Posted
技术标签:
【中文标题】在 JDBC 连接 URL 中提供两个模式名称【英文标题】:Providing two schema name in JDBC connection URL 【发布时间】:2012-02-07 14:34:24 【问题描述】:我的应用程序使用 xml 数据源文件来访问数据库。数据库中存在许多模式,访问任何模式都没有问题。
但是我们已经开始使用 BIRT 来生成报告和图表,因此我面临一个非常典型的问题。
在 BIRT 中,我需要创建一个数据源文件。问题是它接受 jdbc:connection url,我在其中提供 DB 的 url。但是连同 URL,它还要求我指定架构,否则 BIRT 没有显示任何价值在数据集中。 我可以轻松地指定一个模式名称,但是我的查询使用两个模式,因此我无法找到相同的替代方案...创建联合数据集是一种选择,但我的查询很复杂,通常它不是一个可行的选择我……
我指定的连接 URL 是:-
jdbc:mysql://IP:port/schemaName?someString
如何在我的 jdbc 连接 URL 中指定超过 2 个架构..???如何在 BIRT 中连接到单个数据源内的两个架构..
【问题讨论】:
建立两个连接...... 建立两个连接对我来说不是一个选项。我想同时访问两个模式的帖子中已经写过,因为 BIRT 中的 DATASET 只显示一个模式,而我的查询涉及 2-3架构。 【参考方案1】:您从错误的角度解决了这个问题。 MySQL 允许连接来自不同模式的表。您应该让它知道要在哪个架构中查找哪个表。您可以通过在模式名称前面加上“。”来做到这一点。在查询中的每个表名之前,例如:
SELECT db1.products.prod_id, db2.products.upc_code FROM db1.products LEFT JOIN db2.products ON (db1.products.prod_id=db2.products.prod_id)
在这种情况下,您需要在连接 URL 中指定任一架构的名称。
【讨论】:
+1 值得一提的是,通过连接 URL 访问的任何架构都需要其他架构的读取权限。以上是关于在 JDBC 连接 URL 中提供两个模式名称的主要内容,如果未能解决你的问题,请参考以下文章
带有忽略大小写的 JDBC URL 不适用于 H2 数据库连接