dBeaver (CE):DB2 LUW 连接 SQL 错误 42704。Table 模式无法打开但能够写入 SQL 查询

dBeaver (CE): DB2 LUW Connection with SQL ERROR 42704. Table Schema won't open but able to write SQL queries

大约一年半之后,我终于能够通过 dBeaver 连接到我们拥有的 DB2 数据库。作为LUW连接成功(我们的db2是z/os)。安装 IBM Data Studio 后,我能够获得所需的驱动程序。

连接后,我进入架构,进入 Tables,点击它,出现以下错误。

SQL Error [42704]: SYSCAT.SCHEMATA IS AN UNDEFINED NAME. SQLCODE=-204, SQLSTATE=42704, DRIVER=3.69.56
SYSCAT.SCHEMATA IS AN UNDEFINED NAME. SQLCODE=-204, SQLSTATE=42704, DRIVER=3.69.56
THE DESCRIBE STATEMENT DOES NOT SPECIFY A PREPARED STATEMENT. SQLCODE=-516, SQLSTATE=26501, DRIVER=3.69.56
THE CURSOR SQL_CURLH200C1 IS NOT IN A PREPARED STATE. SQLCODE=-514, SQLSTATE=26501, DRIVER=3.69.56
SQL Error [42704]: SYSCAT.SCHEMATA IS AN UNDEFINED NAME. SQLCODE=-204, SQLSTATE=42704, DRIVER=3.69.56

但是,如果忽略错误并转到新建 SQL 查询并编写一个简单的

Select * from schema.table

效果很好,得到了我想要的结果。

考虑到我到达这里所花费的时间,这已经足够了,但是要在我的部门中部署为解决方案,我需要能够查看 Table 列表(模式)。

任何帮助都会很棒。

EDIT1:这里的问题是,没有名为 SYSCAT 的 SCHEMA,也没有 table 名为 SCHEMATA 的 SCHEMA。

z/OS Db2 目录的名称与分布式 Db2 上使用的名称不同(Linux Unix Windows aka LUW)。这是一个list of objects on Db2 z/OS,您可以查看。

您似乎正在使用 dBeaver 浏览 UI Db2 上的 z/OS 对象。您将需要确保您拥有适用于 z/OS Db2 的 db2 jcc 驱动程序。看起来您可能正在使用 LUW 中的一个,因为 SYSCAT.SCHEMATA 是一个 LUW 对象,而不是 z/OS 对象。

您的其他查询有效,因为您指定了一个已知的 table 名称。其他查询应该没问题。问题是 dbeaver 中的接口正在查看 LUW 的 Db2 系统对象,而不是 z/OS。这将一直持续到您能够解决驱动程序问题为止。

在 DBeaver 中,当您创建连接时,选择 Db2 下拉列表下的 "DB2 z/OS driver" 选项,当连接到 DB2 for z/OS

顺便说一句,DBeaver 可以 shell 与 Data Studio 共享,因此您可以(如果愿意)在一次安装中使用这两种产品。不能保证他们在所有情况下都能愉快地分享,但它似乎工作得相当好。

IBM 数据服务器驱动程序还需要服务器端设置。请查看此信息https://www.ibm.com/support/knowledgecenter/SSEPEK_12.0.0/java/src/tpc/imjcc_jccenablespsandtables.html