大约一年半后,我终于能够通过 dBeaver 连接到我们拥有的 DB2 数据库。作为 LUW 连接成功(我们的 db2 是 z/os)。安装 IBM Data Studio 后,我能够获得所需的驱动程序。
连接后,我进入架构,进入表,然后单击它,出现以下错误。
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
Run Code Online (Sandbox Code Playgroud)
但是,如果忽略该错误并转到新 SQL 查询并编写一个简单的
Select * from schema.table
Run Code Online (Sandbox Code Playgroud)
它工作正常并得到我想要的结果。
考虑到我到达这里所花费的时间,这已经足够了,但是要在我的部门中部署为解决方案,我需要能够查看表列表(架构)。
任何帮助都是极好的。
EDIT1:这里的问题是,没有名为 SYSCAT 的 SCHEMA,也没有名为 SCHEMATA 的表。
z/OS Db2 目录的名称与分布式 Db2(Linux Unix Windows 又名 LUW)上使用的名称不同。以下是您可以查看的Db2 z/OS 上的对象列表。
您似乎正在使用 dBeaver 通过 UI 导航 Db2 for z/OS 上的对象。您需要确保拥有适用于 z/OS Db2 的 db2 jcc 驱动程序。看起来您可能正在使用 LUW 中的一个,因为 SYSCAT.SCHEMATA 是一个 LUW 对象,而不是 az/OS 对象。
您的其他查询有效,因为您指定了已知的表名称。其他查询应该没问题。问题是 dbeaver 中的接口正在查看 LUW 的 Db2 系统对象,而不是 z/OS。这将继续,直到您能够解决驱动程序问题。