簡體   English   中英

如何將 IBM_DB 與舊版本的 DB2 一起使用?

[英]How to use IBM_DB with older versions of DB2?

我想使用 IBM DB2 ZF89750C5A8C9725AE4FB85B86EC70Z 版本 9.1 將 Python 連接到 DB2 版本 9.1。

以下是將 Python 連接到 DB2 的代碼。 該程序在 IBM DB2 的更高版本中運行。

import ibm_db

conn = ibm_db.connect("DSN=PDB2;DRIVER={IBM DB2 ODBC DRIVER};DATABASE=MDBASIS;PORT=1234;PROTOCOL=TCPIP;UID=username;PWD=password","","")
stmt = ibm_db.exe_immediate(conn,"create table egg (ID SMALLINT, NAME VARCHAR(30))")
stmt = ibm_db.exe_immediate(conn,"insert into egg (ID, NAME) VALUES('1','ok')")
state = ibm_db.exe_immediate("select * from egg")
result = ibm_db.fetch_both(state)
while result != False:    
    print 'id = %d and name = %s' %(result[0],result[1])
    result = ibm_db.fetch_both(state)
stmt = ibm_db.exe_immediate(conn,"drop table egg")

我的問題是,我的 IBM DB2 的版本是 9.1,沒有 FixPack,當我嘗試連接到 IBM DB2 9.1 版本時收到錯誤消息。

"[IBM][CLI Driver] CLI0133E Option type out of range. SQLSTATE=HY092 SQLCODE=-99999"

此錯誤的解釋寫在http://programmingzen.com/2008/02/08/essential-guide-to-the-ruby-driver-for-db2/is頁中:“如果您收到此錯誤,通常表示您使用的 DB2 版本太舊。安裝最新的 FixPack 或最新版本的 DB2(當前為 9.5)來解決問題。

但我無法安裝最新的 FixPack 或最新版本的 ZC890515AE4FB85B86EC70Z 或以任何方式修改現有的 DB2 安裝。

問題

有什么方法可以在不修改數據庫的情況下連接到 DB2 9.1 版,可能使用 IBM_DB 以外的其他東西?

我認為問題出在客戶端 ibm_db 驅動程序中。 基本上,您可以連接到所有語言的任何舊版本。 嘗試獲取另一個 db2 驅動程序。 如果我是你,我會安裝 db2 客戶端,它帶有幾個位於 sqllib 中的驅動程序。

您使用的是哪個版本的 ibm_db? 我可以毫無問題地使用 ibm_db 1.0.4 連接到 DB2 9.1。

另外:基於您在連接字符串中指定 DSN 的事實,我假設您已經在客戶端上將數據庫編目為 PDB2。 您可以非常簡單地將您的連接語句:

conn = ibm_db.connect('PDB2','username','password')

唯一需要使用較長格式(指定 DATABASE/PORT/HOST/UID/PWD)的情況是您使用的是無 DSN 連接(即數據庫尚未在本地計算機上編目)。

I guess your DB2 client API version is higher than the DB2 server itself, ensure you use the same version on the client machine, try to connect and maintain your database remotely using the DB2 control center, and try to connect from python with:

conn = ibm_db.connect("MDBASIS", "username", "password")

AFAIK,這將強制包裝器使用本機庫而不是 odbc。

ibm_db (and PyDB2 are just python modules that allow you to access the DB2 API calls through python. The DB2 queries themselves are being performed by your DB2 installation... something very separate from ibm_db and PyDB2.

聽起來您的 DB2 安裝是問題,而不是 ibm_db。 您可以通過從命令行運行 db2 並查看是否可以直接在 db2 命令行界面中執行查詢來測試這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM