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
大约一年半之后,我终于能够通过 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