db2 - 尝试使用 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
提前致谢。
解决方案
如果您的 python 脚本使用 db2dsdriver 连接到服务器上的数据库,请尝试将 DisableUnicode 关键字设置为 0 以在 Windows 上强制执行 unicode 代码页(即 1208)。
推荐阅读
- java - Java Graphics的fillRect(int, int, int, int)是如何实现的【低级图形编程】?
- java - 如何使用自定义字符串为类名添加前缀?
- ui-automation - 即使在 1.1.0 修复之后,空手道 switchpage 仍然无法正常工作
- sql - 如何使用 SQL 查找每个组的重复值?
- python - 使用 sudo 访问自动启动 Python
- python - 从任意维度中给定半径的线性子空间中采样随机点
- c# - 在 C# Linq 中加入客户和付款表,其中该年付款中的项目计数等于 2021 为零
- discord - go-discord-irc 对我不起作用,这是命令行上的输出
- c# - 如何在 Net Core 5 中使用 onchange 执行操作?
- flutter - 如何在 Flutter 中制作圆角矩形