web-dev-qa-db-ja.com

IBM i Access ODBCドライバーは列名の最初の文字のみを返します

私は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

これは私にとって問題です。アプリケーションでデータベースにクエリを実行しようとすると(たとえば、Pythonのpyodbcライブラリを使用して)、列名で結果にアクセスできないためです。結果セットでは、両方の列に「C」という名前が付けられています。

私の質問は次のとおりです。

  1. なんでこんなことが起こっているの?
  2. この動作を変更することは可能ですか? (どうやって?)

編集:

これは、列にエイリアスを付けようとしても発生します。

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
4
Liv Carman

列名の最初の文字のみが返されるという欠陥は、IBM APARSE63700で説明されています。
http://www-912.ibm.com/n_dir/nas4apar.NSF/b6c9b771e38b5ea2862564c00079d110/0f43bb0435716de586257f340041ed7a?OpenDocument

この修正は、2016年7月中旬に予定されているLinux用のIBM Access Client Solutions ApplicationPackageの新しいバージョンに統合する必要があります。

4

これは、私が使用していたIBMのドライバーの特定のバージョンのバグだと思います。私はIBMi Access Client Solutions Linux APv07.03.00のODBCドライバーを使用していました。

そのドライバーをIBMi Access for Linuxv7.1.0-1.0のODBCドライバーに置き換えたところ、すべてが期待どおりに機能するようになりました。

4
Liv Carman