当试图使用db2 python包连接到ibm_db时,我会得到以下错误。
[IBM][CLI Driver] SQL4917N Element "SQLE_CLIENT_INFO_WRKSTNNAME"
in the option array is not valid. SQLCODE=-4917这个问题是我的新机器(2019年MacBook Pro)特有的。我从我的旧机器的时间机器备份( 2013年底MacBook Pro)中安装了这台机器。完全相同的代码能够连接到数据库,而不会在我的旧机器上出错。新机器可以使用SQLDeveloper程序连接到数据库,但不能使用python。
在不同的服务器上尝试不同的数据库时,错误仍然存在。我正在尝试连接到云服务上的Db2仓库。
环境:
我试过:
执行connect方法时会得到错误:
import ibm_db
conn = ibm_db.connect(CONN_STRING, "", "")此时,我希望python能够连接到数据库,但是我得到了以下错误:
[IBM][CLI Driver] SQL4917N Element "SQLE_CLIENT_INFO_WRKSTNNAME"
in the option array is not valid. SQLCODE=-4917db2level命令
~/anaconda3/envs/ibm/lib/python3.6/site-packages/clidriver/bin/db2leveldb2level输出
DB21085I This instance or install (instance name, where applicable: "*") uses
"64" bits and DB2 code release "SQL10055" with level identifier "0606010E".
Informational tokens are "DB2 v10.5.0.5", "special_35187", "DARWIN64105_35187",
and Fix Pack "5".
Product is installed at
"~/anaconda3/envs/ibm/lib/python3.6/site-packages/clidriver".发布于 2019-09-08 17:58:39
正如“毛”和“kkuduk”所暗示的,ClientWrkStnName有一个无效的字符。这是由于我的旧Mac和新Mac在同一个网络上的ComputerName冲突造成的。例如。格雷的MacBook Pro ->格雷的MacBook Pro (2)。该问题通过从终端更改新计算机上的ComputerName和HostName来解决。
scutil --set ComputerName "graymac"
scutil --set HostName "graymac"发布于 2019-09-08 14:18:08
此错误意味着有人试图为SQLE_CLIENT_INFO_WRKSTNNAME设置无效值。Db2云应该接受最多255个字节的值,并且它应该默认为当前主机名,所以可能有一些由gethostbyname返回的无效字符?要确认我们必须在执行过程中收集db2cli跟踪(查看它试图设置的实际值)。
要测试的最简单的Python代码是运行
import ibm_db
conn = ibm_db.connect("SAMPLE","db2v111","passw0rd")
stmt = ibm_db.exec_immediate(conn,"select CURRENT client_wrkstnname from sysibm.sysdummy1")
ibm_db.fetch_tuple(stmt)对于我来说,连接工作正常,它返回我的当前主机名:
In [6]: ibm_db.fetch_tuple(stmt)
Out[6]: (u'kkuduk',)测试的一个解决方法是在db2cli.ini中添加一些其他值,例如,如果我设置:
cat /usr/lib/python2.7/site-packages/ibm_db-2.0.7-py2.7-linux-x86_64.egg/clidriver/cfg/db2cli.ini
[sample]
port=60111
hostname=localhost
database=sample
ClientWrkStnName=OverridenHostname相同的代码返回:
In [4]: ibm_db.fetch_tuple(stmt)
Out[4]: (u'OverridenHostname',)https://stackoverflow.com/questions/57834978
复制相似问题