首页 > 解决方案 > 尝试使用 Python 连接 DB2 上的表时出错 (SQL0332N)

问题描述

我正在使用 Python 3.7 连接到 DB2-LUW 数据库,并且一些查询出现错误:“SQL0332N 不支持从源代码页“1252”到目标代码页“874”的字符转换。***”。

首先,我尝试通过重新创建一个新表来测试 Python 与 DB2 上数据库的连接。

我插入 1 条记录并将其读回。当我读取插入的行时,我得到了错误。

交互式python的结果:

import ibm_db_dbi as dbi

print(dbi.__version__)
3.0.2

conn = dbi.connect("DATABASE=<db>;HOSTNAME=<hostname>;PORT=<port>;PROTOCOL=TCPIP;UID=<user>;PWD=<pwd>;", "", "")

c = conn.cursor()

c.execute('create table ibm_db_tst (col1 int)')
Out[5]: True

c.execute('insert into ibm_db_tst values(2)')
Out[6]: True

c.execute('select col1 from ibm_db_tst')
Out[7]: True

print(c.fetchone())

回溯(最近一次通话最后):

文件“C:\Users\2400566\Anaconda3\lib\site-packages\ibm_db_dbi.py”,第 1449 行,在 _fetch_helper 行 = ibm_db.fetch_tuple(self.stmt_handler)

SQLCODE=-332lumn 信息无法检索:[IBM][CLI Driver][DB2/NT64] SQL0332N 不支持从源代码页“1252”到目标代码页“874”的字符转换。

在处理上述异常的过程中,又出现了一个异常:

回溯(最近一次通话最后):

文件“”,第 1 行,在 print(c.fetchone())

文件“C:\Users\2400566\Anaconda3\lib\site-packages\ibm_db_dbi.py”,第 1475 行,在 fetchone row_list = self._fetch_helper(1)

文件“C:\Users\2400566\Anaconda3\lib\site-packages\ibm_db_dbi.py”,第 1456 行,在 _fetch_helper raise self.messages[len(self.messages) - 1]

SQLCODE=-332_dbi::Error: [IBM][CLI Driver][DB2/NT64] SQL0332N 不支持从源代码页“1252”到目标代码页“874”的字符转换。

我不确定有什么问题?需要建议。

我的 Python 版本是在 Window 10 PC x64 上运行的 Python 3.7.7

DB2 在 Windows server 2012 x64 上。

DB2 版本为 DB2 v11.1.0.1527。

数据库地域:GB 数据库代码页:1252 数据库代码集:1252 数据库国家/地区代码:44

提前致谢。

标签: db2db2-luw

解决方案


如果您的 python 脚本使用 db2dsdriver 连接到服务器上的数据库,请尝试将 DisableUnicode 关键字设置为 0 以在 Windows 上强制执行 unicode 代码页(即 1208)。

https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/com.ibm.swg.im.dbclient.config.doc/doc/r0054636.html


推荐阅读