R通过ODBC连接DB2数据库查询报HY000错误问题排查
R通过ODBC查询DB2数据库单设备异常问题
问题表现
使用R语言通过ODBC驱动查询DB2数据库任意表时触发异常,具体特征如下:
- 同环境下连接两套不同的Microsoft SQL数据库可正常运行
- 故障仅在团队4名成员的1台设备上复现
- 更换任意DB2账号登录均无法解决问题
- 其余同事设备运行相同代码可正常返回结果
问题复现代码
library(DBI) library(odbc) con <- dbConnect(odbc::odbc(), dsn = "ourDSN", uid = "kUsername", pwd = "kPwd") dbGetQuery(con,"Select * FROM OURSCHEMA.TABLE1")
故障设备返回报错信息
error: nanodbc/nanodbc.cpp:1655: HY000: [IBM][System i Access ODBC-driver][DB2 for i5/OS] Error message no available. The error message cannot be converted
注:报错信息最后一行由非英文内容翻译而来。
故障设备环境信息
Formal class 'DB2/400 SQL' [package ".GlobalEnv"] with 4 slots ..@ ptr :<externalptr> ..@ quote : chr "\"" ..@ info :List of 15 .. ..$ dbname : chr "OurDBName" .. ..$ dbms.name : chr "DB2/400 SQL" .. ..$ db.version : chr "07.04.0015" .. ..$ username : chr "USER" .. ..$ host : chr "" .. ..$ port : chr "" .. ..$ sourcename : chr "OurSourceName" .. ..$ servername : chr "OurServerName" .. ..$ drivername : chr "CWBODBC.DLL" .. ..$ odbc.version : chr "03.80.0000" .. ..$ driver.version : chr "07.01.0000" .. ..$ odbcdriver.version : chr "03.51" .. ..$ supports.transactions : logi TRUE .. ..$ getdata.extensions.any_column: logi TRUE .. ..$ getdata.extensions.any_order : logi TRUE .. ..- attr(*, "class")= chr [1:3] "DB2/400 SQL" "driver_info" "list" ..@ encoding: chr "" 服务端OS: IBM i 7.4 ODBC驱动版本: 13.00.01.00 工作站环境: R version 4.2.0 Patched (2022-05-12 r82348 ucrt) -- "Vigorous Calisthenics" Platform: x86_64-w64-mingw32/x64 (64-bit)
前期排查过程
- 对比故障设备与正常设备,二者ODBC连接配置无差异,运行相同版本Windows 10操作系统、相同版本R,所有R包均已更新至最新版本
- 已尝试重装ODBC驱动,问题未得到解决
- 排查阶段IT团队与开发人员均未定位到根因,初步备选解决方案为系统重置、全盘格式化重装系统、更换新设备
问题后续验证结果
经后续测试验证,将故障设备的R版本回退至2021年8月发布的旧版本后,故障完全消失。
内容的提问来源于stack exchange,提问作者ErrantBard
相关产品推荐
相关产品推荐

