如何解决如何将IBM_DB与旧版本的DB2一起使用?
| 我想使用IBM DB2 ODBC驱动程序将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\")
我的问题是,没有FixPack的IBM DB2的版本是9.1,并且当我尝试连接到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/中:
\“如果收到此错误,通常意味着您使用的DB2版本太旧。请安装最新的FixPack或最新版本的DB2(当前为9.5)来解决此问题。”
但是我无法安装最新的FixPack或最新版本的DB2,也无法以任何方式修改现有的DB2安装。
题
有什么方法可以连接到DB2版本9.1,而无需修改数据库(可能使用IBM_DB以外的其他方式)?
解决方法
我认为问题出在客户机ibm_db驱动程序中。基本上,您可以从所有语言连接到任何较旧的版本。尝试获取另一个db2驱动程序。如果您是我,我将安装db2客户机,该客户机带有sqllib中的几个驱动程序。
, 您正在使用哪个版本的ibm_db?我能够使用ibm_db 1.0.4连接到DB2 9.1,而不会出现问题。
另外:基于您在连接字符串中指定DSN的事实,我假设您已经在客户端上将数据库分类为PDB2。您可以非常简单地将connect语句更改为:
conn = ibm_db.connect(\'PDB2\',\'username\',\'password\')
唯一需要使用较长格式(在其中指定DATABASE / PORT / HOST / UID / PWD的格式)的情况是,如果使用的是无DSN的连接(即,尚未在本地计算机上对数据库进行分类)。
, 我猜您的DB2客户端API版本高于DB2服务器本身,请确保您在客户端计算机上使用相同的版本,尝试使用DB2控制中心远程连接和维护数据库,并尝试使用以下命令从python连接:
conn = ibm_db.connect(\"MDBASIS\",\"username\",\"password\")
AFAIK,这将强制包装器使用本机库而不是odbc。
, ibm_db(和PyDB2只是python模块,允许您通过python访问DB2 API调用。DB2查询本身是由您的DB2安装执行的...与ibm_db和PyDB2非常不同。
听起来您的DB2安装是问题所在,而不是ibm_db。您可以通过从命令行运行db2并查看是否可以直接在db2命令行界面中执行查询来进行测试。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。