Python:[Informix] [Informix ODBC驱动程序]无效的字符串或缓冲区长度。当我获取数据时,SQLCODE = -11071

问题描述 投票:0回答:1

[当我尝试使用ifxpy软件包检索informix中的表时,出现此错误:

---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
<ipython-input-6-b0557e7f099b> in <module>
     16 while dictionary != False:
     17         tph.append(dictionary)
---> 18         dictionary = IfxPy.fetch_assoc(stmt)
     19 print(pd.DataFrame(tph))

Exception: [Informix][Informix ODBC Driver]Invalid string or buffer length. SQLCODE=-11071

这是我的代码:

import IfxPy
import pandas as pd
ConStr = "SERVER=informix1;DATABASE=ir_fmois;HOST=127.0.0.1;SERVICE=9092;UID=informix;PWD=1234;"
# netstat -a | findstr  9088
try:
    # netstat -a | findstr  9088
    conn = IfxPy.connect( ConStr, "", "")
except Exception as e:
    print ('ERROR: Connect failed')
    print ( e )
    quit()
sql = "SELECT * FROM oih"
stmt = IfxPy.exec_immediate(conn, sql)
dictionary = IfxPy.fetch_assoc(stmt)
tph=[]
while dictionary != False:
        tph.append(dictionary)
        dictionary = IfxPy.fetch_assoc(stmt)
print(pd.DataFrame(tph))

当我打印数据框时,我看到只有前四行。

我也尝试了这段代码,但我没有遇到任何异常,但它也返回了表的前4行:

import IfxPyDbi as dbapi2
ConStr = "SERVER=informix1;DATABASE=ir_fmois;HOST=127.0.0.1;SERVICE=9092;UID=informix;PWD=1234;"
conn = dbapi2.connect( ConStr, "", "")
cur = conn.cursor()
sql = "SELECT * FROM oih"
rows = cur.fetchall()
len(rows)
>>>4

编辑

我尝试一一导入列,并且当我尝试选择字节(blob)列(具有文本数据类型)时,发生了相同的错误。该列的前4行具有空值,但第五行不为空,我认为这就是为什么在第5行中发生错误的原因。

如果有人对如何解决这个问题有任何想法,我将不胜感激。

python-3.x informix
1个回答
0
投票

finderr命令报告:

© www.soinside.com 2019 - 2024. All rights reserved.