我是 DB2 的新手,正在使用 unixODBC 和适用于 Linux 的 IBM i Access ODBC 驱动程序连接到 DB2 for i (V7R1) 数据库。
当我查询数据库时,结果只包括列名的首字母。例如,使用该isql
实用程序运行的典型查询将给我如下所示的内容:
SQL> SELECT column1, column2 FROM schema.table WHERE column1 = 12345
+--------+---------------------------------+
| C | C |
+--------+---------------------------------+
| 12345 | Lorem ipsum dolar sit |
+--------+---------------------------------+
SQLRowCount returns -1
1 rows fetched
这对我来说是个问题,因为当我尝试在应用程序中查询数据库时(例如使用pyodbc
Python 库),我无法通过列名访问结果;两列在结果集中都被命名为“C”。
我的问题是:
- 为什么会这样?
- 是否有可能改变这种行为?(如何?)
编辑:
即使我尝试给列别名也会发生这种情况:
SQL> SELECT column1 as foo, column2 as bar FROM schema.table WHERE column1 = 12345
+--------+---------------------------------+
| F | B |
+--------+---------------------------------+
| 12345 | Lorem ipsum dolar sit |
+--------+---------------------------------+
SQLRowCount returns -1
1 rows fetched
我相信这是我使用的特定 IBM 驱动程序版本的错误。我使用的是来自 IBM i Access Client Solutions Linux AP v07.03.00 的 ODBC 驱动程序。
我用 IBM i Access for Linux v7.1.0-1.0 的 ODBC 驱动程序替换了该驱动程序,现在一切都按预期工作。
IBM APAR SE63700 中描述了仅返回列名的第一个字符的缺陷:
http ://www-912.ibm.com/n_dir/nas4apar.NSF/b6c9b771e38b5ea2862564c00079d110/0f43bb0435716de586257f340041ed7a?OpenDocument
该修复程序应集成到 2016 年 7 月中旬到期的新版 IBM Access Client Solutions Application Package for Linux 中。