You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows11下R-Studio通过ODBC执行查询时出现1655错误求助

问题

更换Windows 11机器后,在R-Studio中通过ODBC可正常建立数据库连接,但执行查询语句时出现nanodbc/nanodbc.cpp:1655错误,同款代码在原Windows 10机器上运行正常。

连接代码:

library(odbc)
library(DBI)

ImpODBC <- dbConnect(odbc::odbc(), "********", uid = "******", PWD = "*******")

查询代码:

IMP_Sales <- dbGetQuery(ImpODBC, "Select SBLOC,SBCUST,SBSMNO,SBITEM,SBTYPE,SBINDT,SBPHYP,SBQSHP,SBEPRC,SBPRIC,SBICST,SBINV,SBCOSTPC,SBUM,SASHIP 
                             From R50FILES.VSADETL 
                             JOIN R50FILES.VSAHEAD 
                             ON SBCMP=SACMP and SBORD=SAORD and SABOCD=SBBOCD 
                             Where SBINV<>999999999 and SBPCOD <> 'LS' and SBCMP = 1 and SBPHYP between 202201 and 202212 and SBITEM <> ''")

错误信息:

Error: nanodbc/nanodbc.cpp:1655: HY000: 躠娽ŋ 覀娽ŋ                
<SQL> 'Select SBLOC,SBCUST,SBSMNO,SBITEM,SBTYPE,SBINDT,SBPHYP,SBQSHP,SBEPRC,SBPRIC,SBICST,SBINV,SBCOSTPC,SBUM,SASHIP 
                             From R50FILES.VSADETL 
                             JOIN R50FILES.VSAHEAD 
                             ON SBCMP=SACMP and SBORD=SAORD and SABOCD=SBBOCD 
                             Where SBINV<>999999999 and SBPCOD <> 'LS' and SBCMP = 1 and SBPHYP between 202201 and 202212 and SBITEM <> '''
问题原因分析
  • 字符编码不兼容:Windows 11与Windows 10的默认编码存在差异,错误信息里的乱码就是明显信号。查询语句末尾的SBITEM <> ''在报错的SQL中变成了SBITEM <> ''',说明字符串转义出现异常,本质是编码不匹配导致ODBC驱动解析SQL时出现乱码和语法错误。
  • ODBC驱动兼容性问题:Windows 11上安装的ODBC驱动版本与Windows 10不一致,或者驱动未针对Win11做适配。虽然驱动能完成连接,但执行查询时对SQL语句的处理逻辑出现错误。
  • R/RStudio环境编码设置差异:Windows 11下RStudio的默认编码(比如UTF-8与GBK的切换)和Win10不同,导致生成的SQL语句编码不符合数据库或驱动的要求,最终无法正确解析执行。

内容的提问来源于stack exchange,提问作者Grigory Slepak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 18:50:44